簡介
rfc6416是描述如何將MPEG-4 Audio/Visual Stream封包至RTP中的。文檔寫的還是比較清晰簡明的,對音頻而言,沒有再定義額外的碼流結構,就是直接對MPEG-4 Audio stream的結構進行打包。下面列出的是需要理解的概念:
-
MPEG-4 Audio/Visual Stream是在ISO/IEC 14496-3,ISO/IEC 14496-2中定義,分別用於audio及video的封包。在之前,audio和video是需要通過mpeg-4 Systems(ISO/IEC 14496-1)進行封裝的。
-
Signaling by MIME Format Parameters
與rfc3640相類似,也需要一種協議攜帶MIME Format Parameters,最常用的是sdp。並且一樣的有對編碼規格的參數意義的定義,詳見文檔第7節定義
- Media Type
rfc6416中爲音頻流定義的Media Type爲MP4A-LATM
細節
下面列出文檔中所需注意的一些細節:
1. RTP包中攜帶的到底是LATM還是LOAS
rfc 6416描述的是RTP 攜帶LATM,並非LOAS
在前面的文章提到過LATM和LOAS的概念,其實LOAS就是 同步信息+LATM。那麼rfc 6416 RTP中攜帶的並沒有同步信息。
2. 傳輸複用的意思
LATM特點就是可複用,就是指可以攜帶多個audio frame(編碼後的)。在基於sip的rtp的流媒體應用中,一個rtp只會攜帶一個audio frame,即使sdp中的ptime的值爲20ms的倍數(20ms時長採樣數據大小是rtp中音頻數據的一個audio frame的基本長度),也被認爲是一個audio frame。而在LATM中是叫多個audio frame被複用。
3.帶內和帶外攜帶config
在前面的文章,列出了LATM的基本結構,其中這個StreamMuxConfig這個結構數據是可以與碼流分開傳輸的,在碼流中即爲帶內,不在碼流中(典型的在sdp中攜帶)即爲帶外。
4. MIME Format Parameters
以下列出了最基本,常用的碼流參數(根據AAC的不同規格,參數會有變化)
-
object(至關重要): AOT的值,描述的是攜帶什麼類型的AAC規格
-
bitrate(必須要有): 音頻流的碼率
-
cpresent(可以沒有,沒有則爲默認): 解釋如下
a boolean parameter that indicates whether audio
payload configuration data has been multiplexed into an RTP
payload.A 0 indicates the configuration data
has not been multiplexed into an RTP payload, and in that case,
the “config” parameter MUST be present; a 1 indicates that it has
been multiplexed.
The default if the parameter is omitted is 1.
If this parameter is set to 1 and the “config” parameter is
present, the multiplexed configuration data and the value of the
“config” parameter SHALL be consistent.
這個參數控制兩個行爲,確定是否複用,確定StreamMuxConfig是帶外還是帶內
- config(是否攜帶,根據參數而定)
a hexadecimal representation of an octet string that
expresses the audio payload configuration data “StreamMuxConfig”.
- profile-level-id(可有可無): 跟H264/265中的幾個profile意義一樣
實例說明
如下圖所示,是一個mpeg-4 audio stream的 sip invite
- 標註1,sub-media-type技術表示的是mpeg-4 audio stream
- 標註2,爲碼流參數信息,aot爲23即AAC-LD,sdp中沒有攜帶 cpresent,按照前面的介紹,即標識是複用流,並且StreamMuxConfig是帶內傳輸。