[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
Sun Sep 5 21:55:28 EEST 2021


Thanks for your reply. 

I’m still puzzled how to do this.

I’ve just tried to do this in the get_video_frame of muxing.c example

ost->frame->pkt_dts = av_rescale_q(timestamp, AVRational{1, 1000}, ost->st->time_base);
ost->frame->pts = ost->frame->pkt_dts;

But the program crashes even more quickly:

[mp4 @ 0x7fc9a6242600] pts (817920) < dts (841472) in stream 0

There is another place in the muxing.c example that uses a rescale function, av_packet_rescale_ts actually, on the write_frame function. But this function is used for both video and audio frames writing. Since the problem with frame producing is only for video, I would say that the rescale must be on the video side only, so it kind makes sense doing this adjustment on the get_video_frame function.

Any tips? 




> On 2 Sep 2021, at 22:06, Alexandr Kasyan <a.kasyan at ntechlab.com> wrote:
> Nuno, 
> I was too wordy. Assign dts, make dts = pts, they come together in the case.
> Is it getting better or do you still need a better way to calculate pts?
> Regards, Alex
> _______________________________________________
> Libav-user mailing list
> 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".

More information about the Libav-user mailing list