[Ffmpeg-devel] problem with timestamps in a video file
Fri Apr 21 21:33:47 CEST 2006
Vincent Torri <vtorri at univ-evry.fr> writes:
> I'm using gstreamer to read a file (xvid stream, no audio, in a AVI) :
> Gstreamer uses in that case ffmpeg. My aim is to do exact seeking (i
> work on avisynth 3.0). But it seems that the gstreamer plugin has
> problems with that file.
> More precisely, when I seek to frame 0 (for example), the timestamp
> returned by gstreamer is 1.0/fps s., instead of 0 s.
> One of the gstreamer dev analysed the file :
> "[the file] has a decodable frame at time 0 but is delayed and
> outputted when the second frame is sent to the decoder. So the first
> frame to exit the decoder gets the timestamp of the second frame"
> it seems that ffmpeg does not manage the timestamps for us, and it
> might buffer/delay/drop an unknown number of frames (it's only
> suppositions), and so, the guess of timestamps is quite complicated.
Many codecs have a delay of a few frames from input to output. This
is necessary if the coded order is not necessarily equal to the
display order (such as when B frames are used). Even if no B frames
are used, it is necessary to delay the output when there is no
indication that there really are no B frames (low_delay in MPEG speak).
> so, here is the question :
> Is there a way to feed data+timestamp to the decoder and get a
> frame+corresponding timestamp back ?
You can use the codec_picture_number and display_picture_number fields
in AVFrame to track the decoding.
Keep in mind also that the AVI format has no notion of timestamps.
mru at inprovide.com
More information about the ffmpeg-devel