H264 NALU 使用PS封裝 RTP發送


最近由於項目平台需求,要將H264 NALU封裝為PS再用RTP發送,PS封裝按照ISO DEC-13818-1標准。一個PS包包含PS Header, PES Header, PS system header, PS system map等。

針對H264做如下PS封裝:

1、每個IDR NALU前一般都會包含SPS、PPS等NALU,因此將SPS、PPS、IDR 的NALU封裝為一個PS包,包括ps頭,然后加上PS system header,PS system map,PES header+h264 raw data。所以一個IDR NALU PS包由外到內順序是:PS header | PS system header | PS system Map | PES header |  h264 raw data。

2、對於其它非關鍵幀的PS包,就簡單多了,直接加上PS頭和PES頭就可以了。順序為:PS header | PES header | h264 raw data。

還有就是用rtp協議發送時,如果一個PS包大於MTU時,會有分包問題。只需要簡單的分包發送就可以了,但是同一個PS包的時間戳是相同的,需要注意。

 

以上是對只有視頻video的情況,如果要把音頻Audio也打包進PS封裝,也可以。當有音頻數據時,將數據加上PES header 放到視頻PES后就可以了。順序如下:

PS包=PS頭|PES(video)|PES(audio),再用RTP封裝發送就可以了。

 

以上是H264 PS封裝的大致流程。PS一些頭的定義,在我的下載中,有需要的可以參考。

或者,加QQ群(219128816)一起探討流媒體方面的開發。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM