1

我正在尝试从 while read 行运行一个函数,该函数包含用于合并两个文件的 ffmpeg 命令。但由于某种原因,它首先运行,$line然后从循环中中断。

"$filesList" 包含三行。我不确定出了什么问题,但我可以通过 echo "$OFILE" 确认,如果我comment out使用 ffmpeg 命令,开启器函数会运行三次,并且只有一次withffmpeg 命令。

opener(){
        OFILE="$1"
        echo "$OFILE"

        ffmpeg -i $opener_path -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate1.ts
        ffmpeg -i $OFILE -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate2.ts
        ffmpeg -i "concat:intermediate1.ts|intermediate2.ts" -c copy -bsf:a aac_adtstoasc merge_$OFILE

        mv merge_$OFILE $OFILE
        rm intermediate1.ts intermediate2.ts
}


while read line; do
        if [ -e "$line" ]; then
                opener "$line"
        fi
done <<< "$filesList"
4

1 回答 1

1

似乎其中一个ffmpeg命令正在从标准输入读取,它$filesList在下一次调用read. 我不熟悉ffmpeg,但有两种可能性:

  1. -i需要论证吗?您发布的代码未设置 的值opener_path,因此其未加引号的扩展会产生一个空字符串,该字符串会被 shell 丢弃。

  2. 是如何concat:intermediate1.ts|intermediate2.ts解释的ffmpeg?鉴于对 的调用rm,它似乎生成了一对来自未知来源的文件。

于 2013-10-02T18:52:49.063 回答