문제를 덮어쓸 때 FFmpeg가 입력을 허용하지 않습니다.

문제를 덮어쓸 때 FFmpeg가 입력을 허용하지 않습니다.

내 스크립트는 기본적으로 비디오를 변환합니다(예: mp4 --> mkv). 작업 디렉토리에 "1.mp4"라는 비디오 파일이 있고 "2.mkv"라는 새 파일을 생성한다고 가정합니다. 이 경우 스크립트는 오류 없이 실행됩니다. 그런데 "1.mp4 --> 2.mkv"를 다시 시도하면 FFmpeg"2.mkv가 이미 존재합니다. 덮어쓰시겠습니까? [y/N]"이라는 메시지가 표시됩니다. 일반적으로 이 질문에 대답할 수 있습니다. 하지만 이 경우에는 의견을 드릴 수 없습니다 FFmpeg. 그래서 "덮어쓰지 말고 종료하세요"라고 나옵니다. 그 후 내 프로그램은 if상황을 찾아 zenity명령을 시도합니다.

이게 스크립트야

#!/usr/bin/env sh

CONTROL(){
    case $? in
        1)
        exit 1;;
        5)
        clear
        echo "Program Closed: Timed Out (15)."
        exit 5;;
        -1)
        clear
        echo "An Unexpected Error Has Occurred."
    esac
}

NOINFO(){
    if [ -z "$ACODEC" ]; then ACODEC="copy"; fi
    if [ -z "$VCODEC" ]; then VCODEC="copy"; fi
    if [ -z "$EXTE" ]; then EXTE=${FNAME##*.}; fi
    EXTE=${EXTE##*.}
}

FNAME=$(zenity --file-selection \
--title="[1/2] Select a Video File" 2> /dev/null)
CONTROL

VAR=$(zenity --forms --separator=":" \
--title="[2/2] Required Informations" \
--text="Enter the required informations.\nFor defaults just click OK." \
--add-entry="Audio Codec (Default = copy)" \
--add-entry="Video Codec (Default = copy)" \
--add-entry="Output Extension (Default = Input)" 2> /dev/null)
CONTROL

ACODEC=$(echo "$VAR" | cut -d ":" -f 1)
VCODEC=$(echo "$VAR" | cut -d ":" -f 2)
EXTE=$(echo "$VAR" | cut -d ":" -f 3)
NOINFO

sudo ffmpeg -i "$FNAME" -c:a "$ACODEC" -c:v "$VCODEC" "$FNAME.$EXTE"

if zenity --text-info --title="Confirm" \
    --checkbox="I want to delete the original file." 2> /dev/null
then
    sudo rm "$FNAME" && sudo mv "$FNAME.$EXTE" "${FNAME%.*}.$EXTE"
fi

zenity --question --width="200" --timeout="15" --title="Please Answer" \
--text="Continue?" 2> /dev/null
CONTROL

프로그램에 어떻게 입력을 제공할 수 있나요?

관련 정보