視頻播放器原理
視音頻技術(shù)主要包含以下幾點(diǎn):封裝技術(shù)掠械,視頻壓縮編碼技術(shù)以及音頻壓縮編碼技術(shù)微王。如果考慮到網(wǎng)絡(luò)傳輸?shù)脑捓厶幔€包括流媒體協(xié)議技術(shù)。
視頻播放器播放一個(gè)互聯(lián)網(wǎng)上的視頻文件倦踢,需要經(jīng)過以下幾個(gè)步驟:解協(xié)議送滞,解封裝,解碼視音頻辱挥,視音頻同步犁嗅。如果播放本地文件則不需要解協(xié)議,為以下幾個(gè)步驟:解封裝晤碘,解碼視音頻愧哟,視音頻同步。他們的過程如圖所示哼蛆。
解協(xié)議的作用,就是將流媒體協(xié)議的數(shù)據(jù)霞赫,解析為標(biāo)準(zhǔn)的相應(yīng)的封裝格式數(shù)據(jù)腮介。視音頻在網(wǎng)絡(luò)上傳播的時(shí)候,常常采用各種流媒體協(xié)議端衰,例如HTTP叠洗,RTMP甘改,或是MMS等等。這些協(xié)議在傳輸視音頻數(shù)據(jù)的同時(shí)灭抑,也會(huì)傳輸一些信令數(shù)據(jù)十艾。這些信令數(shù)據(jù)包括對(duì)播放的控制(播放,暫停腾节,停止)忘嫉,或者對(duì)網(wǎng)絡(luò)狀態(tài)的描述等。解協(xié)議的過程中會(huì)去除掉信令數(shù)據(jù)而只保留視音頻數(shù)據(jù)案腺。例如庆冕,采用RTMP協(xié)議傳輸?shù)臄?shù)據(jù),經(jīng)過解協(xié)議操作后劈榨,輸出FLV格式的數(shù)據(jù)访递。
解封裝的作用,就是將輸入的封裝格式的數(shù)據(jù)同辣,分離成為音頻流壓縮編碼數(shù)據(jù)和視頻流壓縮編碼數(shù)據(jù)拷姿。封裝格式種類很多,例如MP4旱函,MKV响巢,RMVB,TS陡舅,F(xiàn)LV抵乓,AVI等等,它的作用就是將已經(jīng)壓縮編碼的視頻數(shù)據(jù)和音頻數(shù)據(jù)按照一定的格式放到一起靶衍。例如灾炭,F(xiàn)LV格式的數(shù)據(jù),經(jīng)過解封裝操作后颅眶,輸出H.264編碼的視頻碼流和AAC編碼的音頻碼流蜈出。
解碼的作用,就是將視頻/音頻壓縮編碼數(shù)據(jù)涛酗,解碼成為非壓縮的視頻/音頻原始數(shù)據(jù)铡原。音頻的壓縮編碼標(biāo)準(zhǔn)包含AAC,MP3商叹,AC-3等等燕刻,視頻的壓縮編碼標(biāo)準(zhǔn)則包含H.264,MPEG2剖笙,VC-1等等卵洗。解碼是整個(gè)系統(tǒng)中最重要也是最復(fù)雜的一個(gè)環(huán)節(jié)。通過解碼弥咪,壓縮編碼的視頻數(shù)據(jù)輸出成為非壓縮的顏色數(shù)據(jù)过蹂,例如YUV420P十绑,RGB等等;壓縮編碼的音頻數(shù)據(jù)輸出成為非壓縮的音頻抽樣數(shù)據(jù)酷勺,例如PCM數(shù)據(jù)本橙。
視音頻同步的作用,就是根據(jù)解封裝模塊處理過程中獲取到的參數(shù)信息脆诉,同步解碼出來的視頻和音頻數(shù)據(jù)甚亭,并將視頻音頻數(shù)據(jù)送至系統(tǒng)的顯卡和聲卡播放出來
流媒體協(xié)議
流媒體協(xié)議是服務(wù)器與客戶端之間通信遵循的規(guī)定。當(dāng)前網(wǎng)絡(luò)上主要的流媒體協(xié)議如表所示库说。主要流媒體協(xié)議如下
RTSP+RTP經(jīng)常用于IPTV領(lǐng)域狂鞋。因?yàn)槠洳捎肬DP傳輸視音頻,支持組播潜的,效率較高骚揍。但其缺點(diǎn)是網(wǎng)絡(luò)不好的情況下可能會(huì)丟包,影響視頻觀看質(zhì)量啰挪。因而圍繞IPTV的視頻質(zhì)量的研究還是挺多的信不。
因?yàn)榛ヂ?lián)網(wǎng)網(wǎng)絡(luò)環(huán)境的不穩(wěn)定性,RTSP+RTP較少用于互聯(lián)網(wǎng)視音頻傳輸亡呵〕榛睿互聯(lián)網(wǎng)視頻服務(wù)通常采用TCP作為其流媒體的傳輸層協(xié)議,因而像RTMP锰什,MMS下硕,HTTP這類的協(xié)議廣泛用于互聯(lián)網(wǎng)視音頻服務(wù)之中。這類協(xié)議不會(huì)發(fā)生丟包汁胆,因而保證了視頻的質(zhì)量梭姓,但是傳輸?shù)男蕰?huì)相對(duì)低一些。
此外RTMFP是一種比較新的流媒體協(xié)議嫩码,特點(diǎn)是支持P2P誉尖。
封裝格式
封裝格式的主要作用是把視頻碼流和音頻碼流按照一定的格式存儲(chǔ)在一個(gè)文件中。現(xiàn)如今流行的封裝格式如下表所示:
由表可見铸题,除了AVI之外铡恕,其他封裝格式都支持流媒體,即可以“邊下邊播”丢间。有些格式更“萬能”一些探熔,支持的視音頻編碼標(biāo)準(zhǔn)多一些,比如MKV烘挫。而有些格式則支持的相對(duì)比較少祭刚,比如說RMVB。
視頻編碼
視頻編碼的主要作用是將視頻像素?cái)?shù)據(jù)(RGB,YUV等)壓縮成為視頻碼流涡驮,從而降低視頻的數(shù)據(jù)量。如果視頻不經(jīng)過壓縮編碼的話喜滨,體積通常是非常大的捉捅,一部電影可能就要上百G的空間。視頻編碼是視音頻技術(shù)中最重要的技術(shù)之一虽风。視頻碼流的數(shù)據(jù)量占了視音頻總數(shù)據(jù)量的絕大部分棒口。高效率的視頻編碼在同等的碼率下,可以獲得更高的視頻質(zhì)量辜膝。
由表可見无牵,有兩種視頻編碼方案是最新推出的:VP9和HEVC。目前這兩種方案都處于研發(fā)階段厂抖,還沒有到達(dá)實(shí)用的程度茎毁。當(dāng)前使用最多的視頻編碼方案就是H.264。
此外忱辅,在碼率一定的情況下七蜘,幾種編碼標(biāo)準(zhǔn)的比較結(jié)果大致是這樣的:
HEVC > VP9 > H.264> VP8 > MPEG4 > H.263 > MPEG2。
音頻編碼
音頻編碼的主要作用是將音頻采樣數(shù)據(jù)(PCM等)壓縮成為音頻碼流墙懂,從而降低音頻的數(shù)據(jù)量橡卤。音頻編碼也是互聯(lián)網(wǎng)視音頻技術(shù)中一個(gè)重要的技術(shù)。但是一般情況下音頻的數(shù)據(jù)量要遠(yuǎn)小于視頻的數(shù)據(jù)量损搬,因而即使使用稍微落后的音頻編碼標(biāo)準(zhǔn)碧库,而導(dǎo)致音頻數(shù)據(jù)量有所增加,也不會(huì)對(duì)視音頻的總數(shù)據(jù)量產(chǎn)生太大的影響巧勤。高效率的音頻編碼在同等的碼率下嵌灰,可以獲得更高的音質(zhì)涂乌。
由表可見膘茎,近年來并未推出全新的音頻編碼方案葬项,可見音頻編碼技術(shù)已經(jīng)基本可以滿足人們的需要刺啦。音頻編碼技術(shù)近期絕大部分的改動(dòng)都是在MP3的繼任者——AAC的基礎(chǔ)上完成的政鼠。
結(jié)果大致是這樣的:
AAC+ > MP3PRO > AAC> RealAudio > WMA > MP3
參考文章https://blog.csdn.net/leixiaohua1020/article/details/18893769