gpt4 book ai didi

bash - 从 while read 行运行函数

转载 作者:行者123 更新时间:2023-12-04 23:00:44 25 4
gpt4 key购买 nike

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

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

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"

最佳答案

它似乎是 ffmpeg 之一commands 正在从标准输入读取,这会消耗 $filesList 的其余内容在下次调用 read 之前.我不熟悉ffmpeg ,但有两种可能:

  • 是否 -i需要论证吗?您发布的代码未设置 opener_path 的值, 所以它的不带引号的扩展会产生一个空字符串,被 shell 丢弃。
  • concat:intermediate1.ts|intermediate2.ts怎么样由 ffmpeg 解释?鉴于调用 rm ,它似乎产生了一对来自未知来源的文件。
  • 关于bash - 从 while read 行运行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19144352/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com