ffmpeg 知識點補充
提供一種可能解決avformat_find_stream_info耗時問題方案之前,先了解一些基本的ffmpeg的知識點
先看代碼
pFormatContext->streams[video_index]->time_base.den = 1200000;
pFormatContext->streams[video_index]->time_base.num = 1;
//avg_frame_rate 獲取幀率
pFormatContext->streams[video_index]->avg_frame_rate.den = 1;
pFormatContext->streams[video_index]->avg_frame_rate.num = 25;
pFormatContext->streams[video_index]->r_frame_rate.den = 25;
pFormatContext->streams[video_index]->r_frame_rate.num = 1;
註意到每一個結構體都有一個den和num的成員變量
通過查看聲明,了解到上述的結構體其實是這樣子的一個類型
/**
* Rational number (pair of numerator and denominator).
*/
typedef struct AVRational
{
int num; ///< Numerator
分子
int den; ///< Denominator 分母
} AVRational;
由於分數表現形式不方便計算,因此提供了上面的一種結構體保存分子和分母,等
需要進行計算的時候,才進行除法運算,ffmpeg提供了如下的模板進行除法運算
/**
* Convert rational to double.
* @param a rational to convert
* @return (double) a
*/
static inline double av_q2d(AVRational a)
{
return a.num / (double) a.den;
}
參考
http://www.jianshu.com/p/66b13b2b2979
ffmpeg 知識點補充