bash - ffmpeg - 超线程导致 "Conversion failed"具有多个并行实例

标签 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 个在开始时崩溃,并出现以下错误:

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/

相关文章:

linux - Bash - 从零开始的 Linux,cheching 库脚本

linux - 使用 bash 重命名多个目录中的文件

ios - 在顺序模式下并排合并视频

python - 使用 selenium python 的 FFMPEG 输出总是损坏

audio - 如何填充音轨的开头?

arrays - 如何通过将一个元素添加到前一个条目来将值附加到 Bash 中的数组?

html - 上传和嵌入在桌面浏览器中播放但不在移动浏览器中播放的视频

loops - 仅使用 ffmpeg,是否可以使用源 GIF 图像并通过输入 GIF 输出设定长度 > 一个循环的视频?

ffmpeg - 使用 ffmpeg 连接音频文件会导致错误的总持续时间

linux - 使用 sed 的输出一段时间读取循环