[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