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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章