[Libav-user] How to handle video muxing to file when real frame rate varies from the specified frame rate

Nuno Santos nuno.santos at imaginando.pt
Thu Sep 2 19:54:56 EEST 2021


Alex,

I was trying the suggested approach and got a crash:

#1 column -> timestamp_ms since beginning of recording
#2 column -> av_rescale_q(timestamp, AVRational{1, 1000}, ost->st->time_base) where ost->st->time_base = { 1, _fps };            
#3 column -> next_pts++ (frame)

325 4992 1
359 5514 2
392 6021 3
421 6467 4
457 7020 5
485 7450 6
523 8033 7
559 8586 8
587 9016 9
626 9615 10
657 10092 11
690 10598 12
724 11121 13
759 11658 14

// CRASH
[mp4 @ 0x7fa647808200] pts (4616192) < dts (4639744) in stream 0

What could possibly be wrong?

Thanks!

Nuno

> On 2 Sep 2021, at 17:05, Nuno Santos <nuno.santos at imaginando.pt> wrote:
> 
> Alex,
> 
> Thanks for your reply.
> 
> This means that if I have a recording elapsed timer, I could pass the timestamp at the current recording time to make this? Or do you seen any other better way of doing it?
> 
> Right now, the pts is being defined as:
> 
> ost->frame->pts = ost->next_pts++;
> 
> Has per muxing.c example
> 
> Regards,
> 
> Nuno
> 
>> On 2 Sep 2021, at 13:43, Alexandr Kasyan <a.kasyan at ntechlab.com <mailto:a.kasyan at ntechlab.com>> wrote:
>> 
>> Hi, Nuno!
>> 
>> Well, one of the possible approaches is -- set the proper pts for AVPacket-s you're muxing. 
>> The basic formula is: 
>> uint64_t pts = av_rescale_q(timestamp_ms, AVRational{1, 1000}, time_base);
>> 
>> It's usually time or PTS that's specified for packets (and frame's time is usually derived from that), so most of the players take that into account when feeding frames for display. 
>> You can check if your muxing is played at the wrong speed in the first place, then adjust PTS in code if needed.
>> __________________________________________
>> 
>> Regards, Alex
>> _______________________________________________
>> Libav-user mailing list
>> Libav-user at ffmpeg.org <mailto:Libav-user at ffmpeg.org>
>> https://ffmpeg.org/mailman/listinfo/libav-user
>> 
>> To unsubscribe, visit link above, or email
>> libav-user-request at ffmpeg.org with subject "unsubscribe".
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://ffmpeg.org/pipermail/libav-user/attachments/20210902/15b2d73f/attachment.htm>


More information about the Libav-user mailing list