AVStream是存儲(chǔ)每一個(gè)視頻/音頻流信息的結(jié)構(gòu)體
參考結(jié)構(gòu)體理解:http://www.lxweimin.com/p/d109e7ef9749
int index
:標(biāo)識(shí)該視頻/音頻流
AVCodecContext *codec
:指向該視頻/音頻流的AVCodecContext(它們是一一對(duì)應(yīng)的關(guān)系)
AVRational time_base
:時(shí)基。通過(guò)該值可以把PTS,DTS轉(zhuǎn)化為真正的時(shí)間。FFMPEG其他結(jié)構(gòu)體中也有這個(gè)字段,但是根據(jù)我的經(jīng)驗(yàn),只有AVStream中的time_base是可用的。PTS*time_base=真正的時(shí)間
int64_t duration
:該視頻/音頻流長(zhǎng)度
AVDictionary *metadata
:元數(shù)據(jù)信息(同AVFormatContext中的AVDictionary)
AVRational avg_frame_rate
:幀率(注:對(duì)視頻來(lái)說(shuō),這個(gè)挺重要的)
舉例
if(stream ->avg_frame_rate.den && stream ->avg_frame_rate.num){
fps = av_q2d(stream->avg_frame_rate);
}else{
fps=30.0;
}
//其中av_q2d求幀數(shù),利用其中的分子分母做運(yùn)算
static inline double av_q2d(AVRational a){
return a.num / (double) a.den;
}
AVPacket attached_pic
:附帶的圖片。比如說(shuō)一些MP3,AAC音頻文件附帶的專輯封面。