从ffmpeg获取正确的帧率

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从ffmpeg获取正确的帧率相关的知识,希望对你有一定的参考价值。

美好的一天,

我有个问题。我需要从ffmpeg libs获得正确的帧率。

我试着用

pFormatCtx->streams[videoStream]->avg_frame_rate.num

avg_frame_rate的返回值是2997.但是当我转储元信息时,我得到了:

Input #0, avi, from '/test.avi':
  Metadata:
    encoder         : MEncoder SVN-r33883(20110719-gcc4.5.2)
  Duration: 00:49:47.70, start: 0.000000, bitrate: 1294 kb/s
    Stream #0:0: Video: mpeg4 (Advanced Simple Profile) (XVID / 0x44495658), yuv420p, 856x480 [SAR 1:1 DAR 107:60], 1090 kb/s, SAR 491520:492521 DAR 8192:4603, 23.98 fps, 23.98 tbr, 23.98 tbn, 23.98 tbc
    Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 48000 Hz, stereo, s16p, 192 kb/s
2015-09-20 15:47:02.377 TV3[21607:769601] ready to start audio

采样率为:23.98fps。什么价值是正确的,为什么它们不同?

答案

那么,pFormatCtx->streams[videoStream]->avg_frame_rate.den里有什么?

我打赌它是125然后。 AVStream::avg_frame_rate的类型为AVRational,这是一个将有理数作为分数的结构。要获得小数值,您必须将num除以den

-> 2997 / 125 = 23.976

以上是关于从ffmpeg获取正确的帧率的主要内容,如果未能解决你的问题,请参考以下文章

用 FFmpeg 录制未知帧率的视频

ffmpeg 帧率问题 h264+ass 到 mkv

FFmpeg基础:音视频中的那些核心参数

使用 ffmpeg 改变帧率

Python解析systrace获取APP快速滑动界面的帧率

如何设置Android Camera2预览画面的帧率(FPS)?