I've struggled myself with this. There are a lot more framerate-related
fields than that lying around. The ones I know of (in ffmpeg 0.6.3) are
(stream=AVStream, cc=AVCodecContext):
stream->time_base
stream->r_frame_rate
stream->avg_frame_rate
cc->time_base
cc->ticks_per_frame
(you'd think you could maybe derive framerate from the last) I am no
expert, but my guess is that not all containers contain a framerate
field somewhere for tools to read. So libav* tries to estimate one from
timing information. E.g. in my app I can read from a udp multicast
network stream, and even for the same stream, each time I run the app,
it shows a slightly different framerate (as shown by dump_format).
Maybe because it sees a different subsequence of timestamps, or the
relative distribution in time of those timestamps might be slightly
different, ... I don't know. In my app, I settled on
stream->avg_frame_rate for my purposes.
As far as controlling it, I'm not sure what you mean... did you just
want to decode at the frame rate of the stream, or somehow manipulate
the the video to change its framerate?
Andy
On 12/19/2011 1:25 AM, Yingzhou Zhang wrote:
hey there.
I have googled a little bit,found 2 way
1:AVFormatContext->streams->time_base.num/den?
2:AVCodecContext-> streams->r_frame_rate?
However the output of the 2 ways are not the same??
Could you tell me what is the exact way to get frame_rate and how to
control it when decoding video?
Thanks a lot
_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user
_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user