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

我怎样才能给程序输入?

相关内容