我正在尝试使用ffmpeg
从多个视频中并行提取图像。
这是我的bash脚本:
for video in *.MOV; do
base=`basename "$video" .MOV`
ffmpeg -i "$video" -r 0.02 "$base"/out_%02d.png > logs/"$base" 2>&1 &
done
在60个视频上运行此视频时,我检查了logs/
文件,其中有40个文件在开始时崩溃了,并出现以下错误:
初始化输出流0:0时出错-打开输出流#0:0的编码器时出错-可能是不正确的参数,例如bit_rate,rate,width或height
转换失败!
但是,它可以在少量视频上正常工作(大约5个,即使以前不工作的视频也可以)。
编辑:我尝试禁用超线程,现在可以正常工作。为什么超线程导致ffmpeg
失败?
答案 0 :(得分:0)
辅助“超级”线程通常可能会陷入准备就绪的状态,因为执行线程的流处理不需要暂停即可等待更多数据进入。在不禁用超线程的情况下,添加{{ 1}}到您的ffmpeg命令中可能有助于并行化使用。