[Libav-user] Seeking, timestamps, AVFrame, AVStream

Robert Krüger krueger at lesspain.de
Mon Sep 16 09:28:55 CEST 2013

On Sun, Sep 15, 2013 at 11:37 PM, James Board <jpboard2 at yahoo.com> wrote:
> I'm writing a libAV application in C, and I'm trying to use the
> av_seek_frame() or avformatseek_file() to move within the video stream.
> Ideally, I'd like to seek to frame number N.  I'd like a subroutine that
> seeks
> to frame number N, but I think from previous discussions, that isn't the way
> things are done in ffmpeg and libav.  Okay.
> I'm trying to understand how things actually are done in ffmpeg/libav.  When
> decoding a video file (all my files, for now, are AVI containers with no
> compression, or ffvhuff compression), the AVFrame struct has several
> members:
>     pts
>     pkt_pts
>     pkt_dts
>     coded_picture_number
>     display_picture_number
>     best_effort_timestamp (the name of this one really worries me)
>     pkt_pos
>     pkt_duration
> What do those all mean?  Can I use those to figure out which frame this is?
> Also, AVStream has some members:
>     pts (has 3 components)
>     timebase (2 components)
>     start_time
>     duration
> What do they mean?
> I have test code and the only thing that seems useful to me is that pkt_pos
> seems to increase by a very large value for each frame (over 4 million) and
> the it
> is usually the same difference between two frames, but not always.
> Anyway, can someone tell me what the above struct members mean, and how I
> can
> use them to tell where each frame is in the overall video file?  Thanks.

Try looking at the documentation in the header files, in this case
avcodec.h. It should help you quite a bit.

More information about the Libav-user mailing list