Bash ffmpeg-超读原因“;“转换失败”;具有多个并行实例
我正在尝试使用Bash ffmpeg-超读原因“;“转换失败”;具有多个并行实例,bash,video,ffmpeg,Bash,Video,Ffmpeg,我正在尝试使用ffmpeg并行地从多个视频中提取图像。 下面是我的bash脚本: 用于*.MOV中的视频;做 base=`basename“$video”.MOV` ffmpeg-i“$video”-r 0.02“$base”/out\uu%02d.png>日志/“$base”2>&1& 完成 在运行此操作时(在60个视频上),我检查了日志/文件,其中40个文件在开始时崩溃,出现以下错误: 初始化输出流0:0时出错--打开输出流#0:0的编码器时出错-可能是不正确的参数,如比特率、速率、宽度或
ffmpeg
并行地从多个视频中提取图像。
下面是我的bash脚本:
用于*.MOV中的视频;做
base=`basename“$video”.MOV`
ffmpeg-i“$video”-r 0.02“$base”/out\uu%02d.png>日志/“$base”2>&1&
完成
在运行此操作时(在60个视频上),我检查了日志/
文件,其中40个文件在开始时崩溃,出现以下错误:
初始化输出流0:0时出错--打开输出流#0:0的编码器时出错-可能是不正确的参数,如比特率、速率、宽度或高度
转换失败
但是,它可以很好地处理少量的视频(大约5个,甚至是以前不可用的视频)
编辑:我尝试禁用超读功能,现在可以正常工作了。为什么超线程导致
ffmpeg
失败?次“超”线程可能通常处于准备执行状态,因为执行线程的流处理不需要暂停以等待更多数据进入。在不禁用超线程的情况下,将-threads 1
添加到ffmpeg命令中可能有助于并行使用。次“超”线程通常会陷入就绪可执行状态,因为执行线程的流处理不需要暂停以等待更多数据进入。在不禁用超线程的情况下,将-threads 1
添加到ffmpeg命令可能有助于并行使用。我也使用了相同的命令,效果很好。我忘了在我的问题sry(编辑问题)解决方案中提到它:因为你说它适用于较小的集合,所以你可以按顺序处理文件。这需要更长的时间,但应该会成功。删除尾随的&
。确实应该这样做,但我在一台拥有大约100个内核的HPC服务器上工作,这是一种使用并行性的反射:)我尝试禁用了超线程,它解决了问题,现在工作正常(但我不确定为什么)。这类问题的政策是什么?我是否应该写一个答案并接受它,即使没有解释?或者让它打开?如果您对实际原因感兴趣,请编辑问题的形式»为什么超读导致ffmpeg失败«,然后等待答案。但是,如果你只关心一个有效的解决方案,请回答你自己并结束这个问题。我也用同样的命令这样做了,而且效果很好。我忘了在我的问题sry(编辑问题)解决方案中提到它:因为你说它适用于较小的集合,所以你可以按顺序处理文件。这需要更长的时间,但应该会成功。删除尾随的&
。确实应该这样做,但我在一台拥有大约100个内核的HPC服务器上工作,这是一种使用并行性的反射:)我尝试禁用了超线程,它解决了问题,现在工作正常(但我不确定为什么)。这类问题的政策是什么?我是否应该写一个答案并接受它,即使没有解释?或者让它打开?如果您对实际原因感兴趣,请编辑问题的形式»为什么超读导致ffmpeg失败«,然后等待答案。但是,如果你只关心一个有效的解决方案,请回答你自己并结束这个问题。谢谢你的回答。但是,处理器的想法不是在所有线程之间周期性地切换上下文吗?另外,为什么这会导致错误,因为另一个线程可能只是“等待轮到它”被执行谢谢你的回答。但是,处理器的想法不是在所有线程之间周期性地切换上下文吗?此外,为什么会导致错误,因为另一个线程可能只是“等待轮到它”执行