FFmpeg打印后卡住警告:EOF时间戳不可靠

时间:2019-04-13 09:04:05

标签: ffmpeg overlay movie

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

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

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

我正在与Windows资源共享一个示例命令,为此我遇到了这个问题

下面是命令:

    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

以下是该命令中使用的所有资产的链接:

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

最终输出应如下所示:

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

请,我不明白其背后的原因。无论如何,有没有我可以改善命令的地方,所以我不必面对这个问题。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分: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将导致无限循环,但这种情况不会发生。

xmpp.js client documentation