ffmpeg-超线程导致具有多个并行实例的“转换失败”

时间:2019-02-06 10:26:47

标签: bash video ffmpeg

我正在尝试使用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失败?

1 个答案:

答案 0 :(得分:0)

辅助“超级”线程通常可能会陷入准备就绪的状态,因为执行线程的流处理不需要暂停即可等待更多数据进入。在不禁用超线程的情况下,添加{{ 1}}到您的ffmpeg命令中可能有助于并行化使用。