我通過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