gpt4 book ai didi

Bash while 循环等待任务完成

转载 作者:行者123 更新时间:2023-11-29 08:53:02 25 4
gpt4 key购买 nike

我创建了一个 bash 脚本来处理文件夹及其子文件夹中的视频:

find . -type f -name '*.mkv' | while read file;
do
ffmpeg -i $file ...
done

问题:它不是等待 ffmpeg 完成的 while 循环,而是继续遍历循环。最终结果是,文件没有得到处理。我需要一种方法让当前的 while 循环迭代等到 ffmpeg 完成后再继续下一个。或者将这些项目排队的方法。

编辑:因此,迭代一组文件时的解决方案是将 -nostdin 参数传递给 ffmpeg。希望这对其他可能遇到类似问题的人有所帮助。

还有 file --> $file 是一个复制/粘贴错误。

最佳答案

我意识到我之前发布了这个,但我找到了解决方案。感谢您的所有回复。将 -nostdin 参数提供给 ffmpeg 即可。在移动到下一个文件进行处理之前,它将仅处理当前文件。

ffmpeg 的 -nostdin 选项避免尝试从 stdin 读取用户输入,否则视频文件本身会被解释。

ffmpeg -i <filename> ... -nostdin

使用上面的最好的部分是你可以继续使用 verbosity 以防在输出中抛出错误:

ffmpeg -i <filename> ... -nostdin -loglevel panic 

或者,如果您更愿意将输出报告到文件中,请这样做:

# Custom log name (optional). Helpful when multiple files are involved.
# FFREPORT=./${filename}-$(date +%h.%m.%s).log
ffmpeg -i <filename> ... -nostdin -report

您也可以将两者结合使用。也感谢@Barmar 的解决方案!

关于Bash while 循环等待任务完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13995715/

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