打印警告 : EOF timestamp not reliable 后 FFmpeg 卡住

标签 ffmpeg overlay movie

我正在尝试创建一个视频,其中包含一组不同的输入,其中包括一组图像序列,以及一些其他图像和一个视频(可能不止一个)以覆盖在这些图像之上。

最终视频输出的持续时间应该等于最长输入的持续时间(而较短的输入只会循环到该持续时间)。

虽然该命令适用于大多数情况。在某些情况下,我看到警告 EOF 时间戳不可靠,然后 FFmpeg 无限期卡住。这发生在某些特定的输入案例中,并且似乎也因 ffmpeg 的不同版本而异,我尝试使用 ffmpeg 版本 4.1、4.0.4 和3.4.1。它似乎只适用于 4.0.4,而在其他版本上则失败。

我正在共享一个示例命令以及 Windows Assets ,为此我遇到了这个问题

下面是命令:

    ffmpeg -i assets\w_re_p_3\w_re_p_3_%d.jpg -loop 1 -i assets\text_0.png -loop 1 -i assets\text_1.png -loop 1 -i assets\text_2.png -loop 1 -i assets\text_3.png -loop 1 -i assets\text_4.png -loop 1 -i assets\text_5.png -loop 1 -i assets\text_6.png -loop 1 -i assets\text_7.png -lavfi "[0:v]loop=loop=-1:size=121:start=1[lip0];[1:v]scale=w=693:h=155[si_1];[lip0][si_1]overlay=x=13:y=13:shortest=1[over_0];[2:v]scale=w=693:h=45[si_2];[over_0][si_2]overlay=x=13:y=871:shortest=1[over_1];[3:v]scale=w=693:h=155[si_3];[over_1][si_3]overlay=x=13:y=236:shortest=1[over_2];[4:v]scale=w=693:h=40[si_4];[over_2][si_4]overlay=x=13:y=1089:shortest=1[over_3];[5:v]scale=w=693:h=84[si_5];[over_3][si_5]overlay=x=13:y=1141:shortest=1[over_4];[6:v]scale=w=693:h=31[si_6];[over_4][si_6]overlay=x=13:y=1207:shortest=1[over_5];[7:v]scale=w=693:h=85[si_7];[over_5][si_7]overlay=x=13:y=982:shortest=1[over_6];[8:v]scale=w=693:h=52[si_8];[over_6][si_8]overlay=x=13:y=148:shortest=1[over_7];movie=filename=assets\\\\cmedia_cropped.mp4:loop=1,setpts=N/(FRAME_RATE*TB)[mov_0];[mov_0]scale=w=720:h=487[sm_0];[over_7][sm_0]overlay=x=0:y=357:shortest=1" card_output.mp4

以下是命令中使用的所有 Assets 的链接:

https://www.dropbox.com/sh/6bwo4fg5de3fjwz/AAA471jUtLZGtti3hakT1bgfa?dl=0

最终输出应如下所示:

https://www.dropbox.com/s/s92t6qij2lrl2j7/card_output1.mp4?dl=0

拜托,我不明白背后的原因。无论如何我可以改进我的命令,这样我就不必面对这个问题。任何帮助,将不胜感激。

最佳答案

似乎问题出在命令的这一部分 [0:v]loop=loop=-1:size=121:start=1[lip0] .

由于某种未知的原因,FFmpeg 并没有无限期地循环我的输入图像集,而是只循环一次。如果我设置 loop=(any +ve number) ,那么它工作正常。

FFmpeg 卡住了,因为图像集的持续时间(25 fps)小于电影过滤器中视频的持续时间( movie=filename=assets\\cmedia_cropped.mp4:loop=1,setpts=N/(FRAME_RATE*TB)[mov_0] ),这似乎是 FFmpeg 本身的一个错误,因为在文档中清楚地写道 -1 将导致无限循环,但在这种情况下不会发生这种情况。

https://ffmpeg.org/ffmpeg-all.html#loop

关于打印警告 : EOF timestamp not reliable 后 FFmpeg 卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55663787/

相关文章:

performance - ffmpeg 游戏中时光倒流非常慢

ffmpeg - 无法在 2 遍中使用 libx265 'no-info=1'

video - 如何在 ffmpeg 中向视频添加不透明的叠加层?

ios - 相机捕获叠加层上的动画角色

iphone - 跳过 UIImagePickerController 预览 View ?

Java:如何从一组图像创建电影?

video - 从 FFMPEG 中的 600 个 png 图像创建 20 秒视频

Android以编程方式将音频和视频文件与ffmpeg结合起来

html - 扩展叠加层以适应浏览器窗口

python - 在 Jython/Python 中创建电影