我正在尝试使用 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 个在开始时崩溃,并出现以下错误:Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!
但是,它适用于较少数量的视频(大约 5 个,即使在以前不起作用的视频上也是如此)。
编辑 : 我试图禁用超线程,它现在工作正常。为什么超线程会导致
ffmpeg
失败 ?
最佳答案
辅助“超”线程通常可能会卡在准备执行状态,因为执行线程的流处理不需要暂停以等待更多数据进入。在不禁用超线程的情况下,添加 -threads 1
到您的 ffmpeg 命令可能有助于并行化使用。
关于bash - ffmpeg - 超线程导致 "Conversion failed"具有多个并行实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54551342/