如何将AMR数据封装到RTP包中,ToC的F位取值如何确定
F比特取值完全由你当前RTP包的打包策略决定,和原AMR文件本身没有关系,该字段是RTP AMR封装层自定义的控制字段,你可以按照以下规则设置:
- 若你每个RTP包仅封装1个AMR语音帧:所有ToC的F比特直接设置为
0即可,单个RTP包内只有一帧,自然不存在后续帧。 - 若你为了降低小包传输开销,选择单个RTP包打包多个连续的AMR语音帧:
- 包内除了最后一个AMR帧对应的ToC的F比特设为
0,其余所有前面的AMR帧对应的ToC的F比特都设为1 - 例:单个RTP包内封装了4个连续的AMR帧,则第1、2、3个帧的ToC F=1,第4个帧的ToC F=0
- 包内除了最后一个AMR帧对应的ToC的F比特设为
补充注意:多帧打包时需保证所有帧属于同一个通话流、时间戳连续(AMR单帧时长为20ms),且单包总大小不超过路径MTU,避免IP分片。
内容的提问来源于stack exchange,提问作者Kamal Palei
相关产品推荐
相关产品推荐

