天天看點

h264、AAC組裝RTMPPacket

h264組包RTMPPACKAGE結構表如下

h264、AAC組裝RTMPPacket

sps+pps資料區的組包結構如下:

h264、AAC組裝RTMPPacket

H.264資料

往RTMP包中填充的是H.264資料,但不是直接将x264編碼出來的資料填充進去。

一段包含了N個圖像的H.264裸資料,每個NAL之間由:

00 00 00 01 或者 00 00 01  這四個位元組或三個位元組應該去掉後才可以放入RTMP資料中

進行分割。在分割符之後的第一個位元組,就是表示這個nal的類型。

0x67:sps 0x68:pps 0x65:IDR

h264、AAC組裝RTMPPacket

AAC

AAC的音頻檔案格式有 ADIF & ADTS

h264、AAC組裝RTMPPacket

一種是在連續的音頻資料的開始處存有解碼資訊,一種是在每一小段音頻資料頭部存放7個或者9個位元組的頭資訊用于播放器解碼。

RTMP推流需要的是aac的裸資料。是以如果編碼出adts格式的資料,需要去掉7個或者9個位元組的adts頭資訊。faac 可以配置是否編碼裸aac資料。

RTMPPacket組裝aac = 2bit+faac裸資料 或者 2bit+解碼資料

類似于推送視訊,第一個包總是包含sps和pps的音頻序列包,推送音頻同樣第一個包是包含了接下來資料的格式的音頻序列包,第一個位元組定義如下:

h264、AAC組裝RTMPPacket

第一個位元組,包含音頻的一些編碼參數資訊,第二個位元組0x00代表是解碼資料,0x01代表音頻資料

h264、AAC組裝RTMPPacket

繼續閱讀