AMR数据多帧封装在rtp净荷中
AMR在IP域中的净荷格式RFC3267/4867协议描述AMR编码在RTP中的载荷格式,是其在IP域的存在形式。
对于每个RTP会话,AMR净荷有两种模式,分别为节省带宽模式和字节对齐模式,具体采用那种模式,由信令协商决定;采用后一模式可以后可以引入鲁棒排序、帧交叉编码和CRC校验等方式提高语音传输的质量。
文章图片
节省带宽模式
文章图片
a)净荷头格式
CMR
文章图片
CMR(codec mode request)编码模式请求,由发送者向接受者的请求发送者编码器将来的编码速率模式,保存帧类型索引,如果是AMR,取值范围为0-7,表示8种速率模式,如果为AMR-WB,取值范围为0-8,表示9种速率。取值15意味着当前是没有指定哪个模式的请求。
模式选定后,由于采样频率恒定,具体包的打包时长还是不变,不同速率只是净荷长度不一样,例如对于AMR模式0,其速率是4.75Kbit/s,净荷中包含的语音数据为95bits
AMR的8种速率索引表如下图所示
文章图片
AMR-WB的9种速率索引表如下图所示
文章图片
b)净荷内容表ToC(table of contents),第一项表示一个语音帧
0 1 2 3 4 5
±±±±±±+
|F| FT |Q|
±±±±±±+
F:用于标志是否最后一个帧,0表示最后1帧.如果是多帧复用才有Toc才会有多项,否则只有1项。
FT:标志对音帧语音编码模式或舒适噪志的模式,取值范围同CMR取值,FT=14 (SPEECH_LOST, only available for AMR-WB) and FT=15 (NO_DATA),FT=15表示没有当前帧没有净荷;取值10-13该帧要丢弃。
Q:指示帧质量,为0表示对应帧被破坏,1表示未被破坏;如果该帧已被破坏,那么可以通过直接丢弃该帧来处理。
净荷内容表就是对帧内容的数据格式说明
c)语音数据speech data
语音数据即为真正的语音帧或舒适噪声帧的数据,每帧数据的描述和ToC每一项对应起来,数据长度取决于对应模式ToC项中的FT标识的模式
下面给出示例:
示例:
单通道单帧
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+
| CMR=15|0| FT=4 |1|d(0) |
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+
| |
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+
| |
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+
| |
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+
| d(147)|P|P|
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+ |
单通道多帧
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+
| CMR=1 |1| FT=0 |1|1| FT=9 |1|1| FT=15 |1|0| FT=1 |1|d(0) |
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+
| |
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+
| |
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+
| |
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+
| d(131)|
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+
|g(0) |
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+
| g(39)|h(0) |
【音视频|AMR数据多帧封装成RTP数据】±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+
| |
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+
| |
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+
| |
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+
| h(176)|P|P|P|P|P|P|P|
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+
字节对齐模式Octet-aligned Mode
a. 净荷头格式
010 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
±±±±±±±±± - - - - - - -
| CMR |R|R|R|R| ILL | ILP |
±±±±±±±±± - - - - - - -
CMR:同上;
R:保留位,区分节省带宽模式,这些保留位作用之一就是字节对齐;
ILL:可选,指示交错长度(取值为L,交错长度即为L+1);
ILP:可选,交错块的索引,取值范围为0到ILL,超过这个范围,该帧块应被丢弃。
b. ToC
±--------------------+
| list of ToC entries |
±--------------------+
| list of frame CRCs | (optional)
- - - - - - - - - - -Note, for ToC entries with FT=14 or 15, there will be nocorresponding speech frame or frame CRC present in the payload.
组成同节省带宽模式
ToC项:在该模式下,6位ToC也需要2位补齐。
CRC:CRC校验位可选,如果带外信令协商需要校验,则每项对应每个语音数据进行8位长度的校验。
语音数据
同节省带宽模式,只是要求每帧必须补0对齐;对于多帧的净荷,可以和节省模式一样,一帧顺序排,也可以所有帧以字节为单位交错排序,尽量把各个帧错误敏感位排前面。
示例:
单通道多帧
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+
| CMR=6 |R|R|R|R|1|FT#1=5 |Q|P|P|0|FT#2=5 |Q|P|P| f1(0…7) |
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+
| f1(8…15) | f1(16…23) | … |
-
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+
- … :
| … |f1(152…158) |P| f2(0…7) |
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+
| f2(8…15) | f2(16…23) | … |
-
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+
- … :
| … |f2(152…158) |P|
±±±±±±±±±±±±±±±±±±±±±±±±+
多通道
关于多帧复用
多帧复用为了降低带宽,减少网络传输的RTP包数,把多帧的数据打包在1个RTP包里面进行传输。净荷里面用ToC表来管理多帧数据,说明模式等内容,这样也可根据网络状况灵活改变多帧的速率,例如,多帧中每个帧的速率不一定要一样。
采用多帧复用要注意关注RTP包的大小、时戳是否正确
参考
AMR在IP域中的编码(rfc3267,4867)
推荐阅读
- 音视频|wireshark抓取rtp流保存为.264文件并播放
- H.264编码原理解析(一)基本名词解释
- pycharm|【Python实现视频转文字操作】
- 拓端tecdat|【视频】线性混合效应模型(LMM,Linear Mixed Models)和R语言实现案例
- 拓端tecdat|【视频】LSTM神经网络架构和原理及其在Python中的预测应用|数据分享
- YYC蜻蜓系统系列|详细说明如何配置蜻蜓Q系统的直播功能完美实现直播和观赏直播,推拉流配置完整说明一颗优雅草科技伊凡写
- 面向体验,助推超视频时代新增长
- 火山引擎、阿里云、腾讯云联合发布"超低延时"直播技术标准
- 火山引擎举办视频云科技原力峰会,发布面向体验的全新视频云产品矩阵