用于AMR和G729等编解码器的语音样本的RTP中的标记位

时间:2012-03-21 10:53:51

标签: rtp

我想知道RTP中Marker Bit对语音数据包的重要性,这里有任何RFC告诉它。

我知道视频数据包标记位意味着同一图像的最后一个数据包因此,它的最后一个数据包具有与图像对应的PTS时间戳,但对于编解码器的语音数据包则表示AMR-NB或G711 alaw或者G729,每个RTP数据包中的标记位通常都是假的。

那么,在这种RTP包的情况下,Marker位的含义是否会改变?

此致 尼丁

2 个答案:

答案 0 :(得分:2)

根据RFC

  

标记(M):1位         标记的解释由简档定义。它是         旨在允许诸如帧边界之类的重要事件         在数据包流中标记。配置文件可以定义额外的         标记位或通过更改指定没有标记位         有效载荷类型字段中的位数。

我的理解是,对于语音数据包,单帧(大多数时间为20毫秒)所需的数据不是那么大,以至于我们可以将其发送到多于1个RTP数据包。 因此,对于语音分组标记比特意味着新流和&的开始。从这里考虑时间戳。

当您查看视频数据包(如H261,H263,...)时,单帧需要多个RTP数据包。在那种情况下,标记位代表单帧的结束&收到后你可以开始解析整个帧。

这也适用于RFC 2833中的DTMF,其中单个事件由多个RTP数据包表示。

答案 1 :(得分:1)

在音频编解码器中,如果要分析任何编解码器的wireshark轨迹。让我们说AMR,您将有以下观察

对于语音数据包,标记位表示talkpurt的开始。会话开始是很好的机会来调整接收器的播出延迟,以补偿发送器和接收器时钟速率之间的差异以及网络延迟抖动的变化。在话音突发期间的分组需要连续播放,而听众通常对暂停持续时间的微小变化不敏感。 标记位是一个提示;如果时间戳时钟速率已知,则可以通过比较两个数据包之间的时间戳和序列号的差异来计算话音突峰的开始。

数据包可能无序到达,因此在talkpurt中的第二个数据包之后接收带有标记位的数据包。只要播出延迟比该重新排序长,接收器仍然可以执行延迟调整。如果没有,它只需要等待下一个talkpurt。

来源:http://www.cs.columbia.edu/~hgs/rtp/faq.html#marker

同样的事情也可以在这里阅读。 http://msdn.microsoft.com/en-us/library/dd944715(v=office.12).aspx