白話淺談MPEG2-TS之demux

來源:互聯網
上載者:User

標籤:mpeg2-ts   ts   pes   視頻解碼   

        TS都是一個TS包組成,每個包都是固定188個位元組,每個包都是4個位元組包頭開始,包頭第一個位元組是固定的0x47。那其他184個位元組是什麼呀,裡面基本都裝的是音頻或者視頻解碼資料。如果給定一個TS檔案,怎麼去尋找解碼音視頻解碼資料呢?

        每個TS包的前4個位元組的包頭裡都有一個PID,首先,一個個遍曆TS包,我們找到PID為0的TS包,這個包叫PAT,這個PAT包裡包含了PMT的PID號,所以我們再遍曆TS包又又可以找到名為PMT的TS包,PMT裡有什麼呢?PMT裡包含了video TS包的PID和它的codec,audio TS包的PID和它的codec 。有了codec我們知道要選擇什麼解碼器,有PID我們就可以獲得解碼資料。

        我們先來說說video資料和audio資料是怎麼分散在TS包裡的。video和audio其實都是以一種叫PES(Packetized Elementary Stream)的形式組織的。一幀視頻就是一個PES包。我們都知道一個TS包只有188個位元組,除掉包頭還剩184個位元組,這是不可能放下一幀的。實際上一個PES包是分配在連續的幾個TS包中,所以如果我們要獲得一幀資料,那麼我們需要把連續的幾個TS包裡的資料全部取出來才能組合成一個PES。那我們怎麼知道一個PES的開始和結尾呢?那我們還是一個個遍曆每一個TS包,尋找包頭裡payload_unit_start_indicator為1包,這個標誌位代表著是一個PES的開始,那麼我從這開始,一直到下一個payload_unit_start_indicator為1,這中間的TS包組成起來就是一個PES。


,可以看到,PMT_PID值為4096,那麼我們就找PID為4096的TS包,就是PMT,在PMT裡,可以發現,視頻PID為265,音頻PID為257

轉載請註明出處http://blog.csdn.net/tung214/article/details/39502457


TS資料包實際順序圖,Paload為1代表一個PES包的開始。



白話淺談MPEG2-TS之demux

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.