1. 程式人生 > >ffmpeg 知識點補充

ffmpeg 知識點補充

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 知識點補充