我通过RTP发送音频流,同时应该发送一些DTMF事件来控制另一端的交换机。是否可以同时发送RTP音频和DTMF事件?
首先,从RTP标准来看,是否允许发送连续不间断音频和事件时间重叠?我正在阅读RFC3550,RFC3551和RFC4733,并没有看到任何明确提及这是允许的,但并未真正明确禁止这一点。
标记位的使用可能会令人困惑。也就是说,它用于非帧音频有效负载(我使用u-law pcm)来指示不连续之后的第一帧,而在RFC4733事件中,相同的标记位标记事件的开始。无处可以找到一个流复用的提及。
其次,一个实际的考虑。即使标准允许,实践中是否有风险/不常见?我通过其功能图(features.conf
)控制Asterisk功能。在DTMF事件期间,所有电话和PJSIP库都将音频流静音。
最后,如果标准允许并且Asterisk当然不知道如何从这种有效载荷混合中发疯,那么流式传输的正确方法是什么?我在想什么的,是这样的(假设,例如只的缘故,PCM音频有效载荷长度为100个样本= 100个蜱,和DTMF事件300只蜱长):
Seq = 10, Timestamp = 1000, M = 0, Payload = PCM
Seq = 11, Timestamp = 1000, M = 1, Payload = DTMF: '*'; duration = 100
Seq = 12, Timestamp = 1100, M = 0, Payload = PCM
Seq = 13, Timestamp = 1000, M = 0, Payload = DTMF: '*'; duration = 200
Seq = 14, Timestamp = 1200, M = 0, Payload = PCM
Seq = 13, Timestamp = 1000, M = 0, Payload = DTMF: '*'; duration = 300; E = 1
那会是一个正确的流?
我的整体印象是RTP的整个写法是假设一个媒体流,不同的格式只是媒体的替代表示,我认为你是对的,标准中的这个陈述应该是最广泛的NSE。 – kkm 2014-11-26 02:53:55