網(wǎng)站建設(shè)報(bào)價(jià)明細(xì)表指數(shù)分布的分布函數(shù)
一、音視頻包含哪些數(shù)據(jù)


對于一個(gè)mp4文件我們可以通過音視頻分析軟件打開查看內(nèi)部信息。
從兩圖可以看出mp4文件一般包含 音頻流 視頻流等。
對于上面的字段大致分析如下
Format | 編碼方式 | AVC | 現(xiàn)在大部分視頻都是這種編碼方式,即H264。 |
CodecId | 編碼器id | avc1 | H264封裝有2種格式:h264和avc1,avc1一般通過ffmpeg轉(zhuǎn)碼生成的視頻 不帶起始碼0×00000001的 |
Duration | 播放時(shí)間 | 可以在解碼時(shí)獲取顯示 | |
Bit rate | 比特率 | 1929Kbps | 指視頻或音頻文件在單位時(shí)間內(nèi)使用的數(shù)據(jù)流量 |
Frame rate | 幀率 | 25 | 一秒鐘顯示的圖片數(shù) |
Chroma Subsampling | 采樣排列方式 | 4:2:0 | 4:4:4表示完全取樣。 4:2:2表示2:1的水平取樣,垂直完全采樣。 4:2:0表示2:1的水平取樣,垂直2:1采樣。 4:1:1表示4:1的水平取樣,垂直完全采樣 |
Channel | 聲道數(shù) | 2channels | 雙聲道(音頻才有) |
Sampling Rate | 采樣率 | 44.1KHZ | 每秒鐘采樣的次數(shù) |
二、音視頻解封裝流程

封裝格式相關(guān)函數(shù)
? avformat_alloc_context();負(fù)責(zé)申請一個(gè)AVFormatContext
結(jié)構(gòu)的內(nèi)存,并進(jìn)行簡單初始化
? avformat_free_context();釋放該結(jié)構(gòu)里的所有東西以及該
結(jié)構(gòu)本身
? avformat_close_input();關(guān)閉解復(fù)用器。關(guān)閉后就不再需要
使用avformat_free_context 進(jìn)行釋放。
? avformat_open_input();打開輸入視頻文件
? avformat_find_stream_info():獲取視頻文件信息
? av_read_frame(); 讀取音視頻包
? avformat_seek_file(); 定位文件
? av_seek_frame():定位文件
區(qū)分不同的碼流
AVMEDIA_TYPE_VIDEO視頻流
video_index = av_find_best_stream(ic,AVMEDIA_TYPE_VIDEO,-1,-1, NULL, 0);
AVMEDIA_TYPE_AUDIO音頻流
audio_index = av_find_best_stream(ic,AVMEDIA_TYPE_AUDIO,-1,-1, NULL, 0)
三、解封裝分析
avformat_open_input和avformat_find_stream_info分別用于打開一個(gè)流和分析流信息。
在初始信息不足的情況下(比如FLV和H264文件),
avformat_find_stream_info接口需要在內(nèi)部調(diào)用
read_frame_internal接口讀取流數(shù)據(jù)(音視頻幀),然后再分
析后,設(shè)置核心數(shù)據(jù)結(jié)構(gòu)AVFormatContext。
由于需要讀取數(shù)據(jù)包,avformat_find_stream_info接口會(huì)帶來
很大的延遲。