音視頻基礎(chǔ)

我們首先來(lái)講講流媒體的封裝格式,如MP4,FLV,常見(jiàn)的廣電流媒體如TS格式。

再如常見(jiàn)的流媒體文本格式為M3U8,其內(nèi)部就是封裝的TS片格式。真正播放器解析的,也是其內(nèi)部的TS片。

以上說(shuō)的這是,都是流媒體的封裝格式。? 那我們常說(shuō)的H264、H265是什么呢?這個(gè)是編碼格式。

編碼格式的意思就是,將流媒體的內(nèi)容進(jìn)行壓縮所用到的算法。比如視頻壓縮,常用的H264編碼,就是用H264算法進(jìn)行壓縮大小。音頻就是用ACC算法進(jìn)行壓縮。

?一部片源,我們解碼的時(shí)候,首先通過(guò)封裝格式的格式頭,去找到一些信息。?然后就進(jìn)行每一個(gè)視頻編碼幀與音頻編碼幀的解析,這個(gè)過(guò)程是兩個(gè)線程去處理,一個(gè)處理視頻,一個(gè)處理音頻。最后音視頻同步來(lái)呈現(xiàn)最終的結(jié)果。如下圖:

?可以看到,視頻編碼幀通過(guò)H264解碼出來(lái)的是YUV格式,一般為YUV420或者YUV420P。再轉(zhuǎn)成RGB進(jìn)行顯示。?這個(gè)是解碼過(guò)程。編碼過(guò)程就剛好相反,手機(jī)采集的視頻信息最初為NV21,轉(zhuǎn)再碼為YUV格式,再通過(guò)H264來(lái)進(jìn)行編碼。? 音頻文件也是相同的邏輯,片源的解碼用aac算法解碼成PCM原始音頻,再進(jìn)行播放,編碼過(guò)程則相反。

下圖為YUV數(shù)據(jù)對(duì)比圖


以下是YVU與RGB的公式的轉(zhuǎn)換。ffmpeg中已經(jīng)有了這些公式的接口。



GOP即Group of picture(圖像組),指兩個(gè)I幀之間的距離。GOP可以理解為一個(gè)視頻段。里面包含了這個(gè)視頻段的完整信息。先講講IPB幀。

I幀為關(guān)鍵幀,包含了幀的完整信息,P幀為預(yù)測(cè)編碼圖像幀,就是說(shuō)這一幀的信息是跟他前一幀的信息有關(guān),若前一幀信息丟失,則P幀信息就會(huì)出問(wèn)題。B幀為雙向預(yù)測(cè)編碼圖像幀,跟前后的幀都有關(guān)系,所以說(shuō)B幀的壓縮是最高的,本身的信息都分散到了前后。

我們先看看圖中的解碼順序,這里先解出了I幀,隨后的兩個(gè)B幀都需要前后信息,到第4個(gè)P幀的時(shí)候,需要前一幀信息,注意,這里的前一幀,是指的前一個(gè)已經(jīng)解析出的最近的幀,故這里指的是I幀而不是B幀。?到第4個(gè)P幀解碼完成后,再開(kāi)始解析第2個(gè)B幀,此時(shí)的后一幀,也不是指第3個(gè)B幀,而是指離的最近的已經(jīng)解析出的P幀,故解碼順序?yàn)?342.?

可以看出,B幀跟后面的一幀是有關(guān)系的。這意味著,幀的播放順序和解析順序并不一致。因此,在現(xiàn)實(shí)的播放流程中,總是需要先緩沖一部份幀,才能流暢的播放。

DTS:Decode Time Stamp,解碼時(shí)間戳

PTS:Presentation Time Stamp ,展示時(shí)間戳

可以看出,DTS跟解碼順序是一樣的,PTS其實(shí)就是幀的排列順序,當(dāng)沒(méi)有B幀時(shí),這兩時(shí)間戳的值是完全一樣的。?

DTS的作用在,主要是標(biāo)識(shí)讀入內(nèi)存中的bit流在什么時(shí)候開(kāi)始送入解碼器中進(jìn)行解碼。?

PTS作用于在音視頻同步的時(shí)候采用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • [TOC] 音視頻&流媒體 是什么促使我要寫這一篇音視頻入門文章?那是因?yàn)楹鸵幻米哟蛸€碼率的概念,結(jié)果輸了;對(duì)一個(gè)...
    AllenWu閱讀 5,158評(píng)論 1 24
  • 今天早上一個(gè)好友開(kāi)的飯團(tuán)邀請(qǐng)我做特邀嘉賓。接觸她的這段時(shí)間,我知道她身邊沒(méi)有“大咖”云集營(yíng),那絕對(duì)也是“二咖”的集...
    安心悅舍閱讀 1,176評(píng)論 0 2
  • 今天中級(jí)班結(jié)業(yè),鼓足了前半生力氣終于在群里做了一個(gè)小小的講演 雖然簡(jiǎn)短,卻是我用心感受的成果,謝謝所有支持我的人!...
    丟掉果兒閱讀 155評(píng)論 1 2
  • 1 每次帶二寶去陪大寶上課,我總是會(huì)想,如果沒(méi)有二寶,我肯定會(huì)在那里安安靜靜地看書(shū)。終于,有這么一個(gè)機(jī)會(huì),二寶被爸...
    塔塔西城閱讀 274評(píng)論 3 1
  • 張小云小的時(shí)候曾經(jīng)是班里的霸王,現(xiàn)在卻不太愛(ài)說(shuō)話了,我不是他最好的朋友,但既然接受了他父母的請(qǐng)求,也該和他一起聊聊...
    十有九五閱讀 1,274評(píng)論 2 5

友情鏈接更多精彩內(nèi)容