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

manuelyuan manuelyuan at 163.com
Fri Nov 8 04:58:39 EET 2019


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?


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


More information about the ffmpeg-devel mailing list