[FFmpeg-devel] [PATCH] lavf/movenc: Replace dts by pts to calculate duration

Steven Liu lq at chinaffmpeg.org
Fri Nov 8 15:39:27 EET 2019



> 在 2019年11月8日,11:58,manuelyuan <manuelyuan at 163.com> 写道:
> 
> I have try to make fate again and it still works, I do not know why it breaks fate-binsub-movtextenc on your side
> My steps are:
> 1、./configure 
> 2、make fate
> If I'm wrong, what should I do?
./configure need add one parameter: --samples=fate-suite/
make fate-rsync
make fate



> 
> 
> At 2019-11-08 02:21:16, "Michael Niedermayer" <michael at niedermayer.cc> wrote:
>> On Thu, Nov 07, 2019 at 05:55:18PM +0800, manuelyuan wrote:
>>> From: Mengyang Yuan <manuelyuan at 163.com>
>>> 
>>> In this case, the input video is of dynamic frame rate and we don't want to
>>> duplicate or drop frames, but the output video duration calculated by DTS is
>>> incorrect, I solved it by using PTS.
>>> There are many UGC videos with dynamic frame rates, which are represented by
>>> PTS jumps. After transcoding with ffmpeg -vsync 0 or -vsync 2, the output
>>> video duration becomes longer.By reading the code of x264/encoder/encoder.c,
>>> I found that in order to predict the B frame, x264 needs to ensure that there
>>> are enough reference frames when DTS = 0, so the DTS of these reference frames
>>> will subtract the cache time. However, the cache time includes the part of PTS
>>> jumps, which results in the abnormal small DTS.
>>> 
>>> Signed-off-by: Mengyang Yuan <manuelyuan at 163.com>
>>> ---
>>> libavformat/movenc.c  | 23 ++++++++++++++---------
>>> libavformat/movenc.h  |  2 ++
>>> tests/ref/fate/movenc | 20 ++++++++++----------
>>> tests/ref/lavf/mov    |  4 ++--
>>> tests/ref/lavf/mp4    |  4 ++--
>>> 5 files changed, 30 insertions(+), 23 deletions(-)
>> 
>> breaks fate-binsub-movtextenc
>> ...
>> 
>> [mp4 @ 0x29327c0] Estimating the duration of the last packet in a fragment, consider setting the duration field in AVPacket instead.
>> size=       1kB time=00:00:05.85 bitrate=   1.3kbits/s speed=6.03e+04x    
>> video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1809.803955%
>> make: *** [fate-binsub-movtextenc] Error 1
>> 
>> [...]
>> -- 
>> Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>> 
>> Any man who breaks a law that conscience tells him is unjust and willingly 
>> accepts the penalty by staying in jail in order to arouse the conscience of 
>> the community on the injustice of the law is at that moment expressing the 
>> very highest respect for law. - Martin Luther King Jr
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".

Thanks
Steven







More information about the ffmpeg-devel mailing list