[Libav-user] AVStream->time_base not functional

Sampsa Riikonen sampsa.riikonen at iki.fi
Mon Nov 21 12:35:38 EET 2016


At the current development branch, setting


does not have any effect on the final stream time base anymore..!
(in earlier versions there where the codec time base and the stream time 
base, and one had to do "av_packet_rescale_ts" when giving the AVPackets 
to the muxer).

Whatever I put in the stream time base, the matroska muxer always writes 
into the file header (you can check this with "mkvinfo -g filename.mkv") 
like this:

Track => default duration => 1000 ms ("1000 frames/fields per second for 
a video track")

Timestamps for individual frames are ok, but media players, live vlc, 
fail miserably when seeking such a file.
.. in order for them to do decent seeking, they need the timebase to 
reflect the actual frame rate of the video stream (i.e. for 20 fps 
"track => default duration => 40 ms").

Unfortunately, in "avformat.h":
*   etc.) as known. The @ref AVStream.time_base "stream timebase" should
*   be set to the timebase that the caller desires to use for this 
stream (note
*   that the timebase actually used by the muxer can be different, as 
will be
*   described later).
* information on the packets sent to the muxer must be in the corresponding
* AVStream's timebase. That timebase is set by the muxer (in the
* avformat_write_header() step) and may be different from the timebase
* requested by the caller.

Why was this implemented?  Is there any way to force the timebase to a 
certain value?



More information about the Libav-user mailing list