Audio

星號調試擴展質量差的音頻 - rtp 亂序

  • January 19, 2022

FreePBX 16.0.10.34,或者直接的Asterisk 11/16/18.6.0 都是一樣的,所有那些使用一些SIP 電話的人都會遇到奇怪的音頻問題,即語音音量不斷變化,另一種方式是金屬聲音ecc。

Audio Codec: G711 or G729
Dial echo test > record pcap 
Wireshark > Voip > show call graph and get out of sequence notation


                                            ...........Receive......... .........Transmit..........
BridgeId ChannelId ........ UpTime.. Codec.   Count    Lost Pct  Jitter   Count    Lost Pct  Jitter RTT....
===========================================================================================================

         105-0000013e       00:00:25 g729     1258     589K 46884   0.000   1242       0    0   0.003   0.006

電話製造商只是獲取數據包日誌並消失,我該如何調試這些問題?

嘗試使用 ptime 20 強制編解碼器 G711,將 JITTERBUFFER 添加到回顯測試上下文中:

[app-echo-test]
include => app-echo-test-custom
exten => *43,1,Set(CONNECTEDLINE(name-charset,i)=utf8)
exten => *43,n,Set(CONNECTEDLINE(name,i)=Test Eco)
exten => *43,n,Set(CONNECTEDLINE(num,i)=*43)
exten => *43,n,Answer
exten => *43,n,Set(JITTERBUFFER(adaptive)=default)
exten => *43,n,Macro(user-callerid,)
exten => *43,n,Wait(1)
exten => *43,n,Background(demo-echotest,,,app-echo-test-echo)
exten => *43,n,Goto(app-echo-test-echo,1,1)

;--== end of [app-echo-test] ==--;

似乎使用它但沒有結果:

sing SIP RTP Video TOS bits 136 in TCLASS field.   == Using SIP RTP Video CoS mark 4
   -- Executing [*43@from-internal:1] Set("PJSIP/101-00000143", "CONNECTEDLINE(name-charset,i)=utf8") in new stack
   -- Executing [*43@from-internal:2] Set("PJSIP/101-00000143", "CONNECTEDLINE(name,i)=Test Eco") in new stack
   -- Executing [*43@from-internal:3] Set("PJSIP/101-00000143", "CONNECTEDLINE(num,i)=*43") in new stack
   -- Executing [*43@from-internal:4] Answer("PJSIP/101-00000143", "") in new stack
      > 0x7fc0940e4a80 -- Strict RTP learning after remote address set to: 10.7.208.157:50248
      > 0x7fc0941034e0 -- Strict RTP learning after remote address set to: 10.7.208.157:50246
      > 0x7fc0940e4a80 -- Strict RTP qualifying stream type: audio
      > 0x7fc0940e4a80 -- Strict RTP switching source address to 10.168.5.201:39519
   -- Executing [*43@from-internal:5] Set("PJSIP/101-00000143", "JITTERBUFFER(adaptive)=default") in new stack
   -- Executing [*43@from-internal:6] Macro("PJSIP/101-00000143", "user-callerid,") in new stack
   -- Executing [s@macro-user-callerid:1] Set("PJSIP/101-00000143", "TOUCH_MONITOR=1636707571.457") in new stack
   -- Executing [s@macro-user-callerid:2] Set("PJSIP/101-00000143", "AMPUSER=101") in new stack
   -- Executing [s@macro-user-callerid:3] Set("PJSIP/101-00000143", "HOTDESCKCHAN=101-00000143") in new stack
   -- Executing [s@macro-user-callerid:4] Set("PJSIP/101-00000143", "HOTDESKEXTEN=101") in new stack
   -- Executing [s@macro-user-callerid:5] Set("PJSIP/101-00000143", "HOTDESKCALL=0") in new stack
   -- Executing [s@macro-user-callerid:6] ExecIf("PJSIP/101-00000143", "0?Set(HOTDESKCALL=1)") in new stack
   -- Executing [s@macro-user-callerid:7] ExecIf("PJSIP/101-00000143", "0?Set(CALLERID(name)=)") in new stack
   -- Executing [s@macro-user-callerid:8] GotoI    sing SIP RTP Video TOS bits 136 in TCLASS field.   == Using SIP RTP Video CoS mark 4
   -- Executing [*43@from-internal:1] Set("PJSIP/101-00000143", "CONNECTEDLINE(name-charset,i)=utf8") in new stack
   -- Executing [*43@from-internal:2] Set("PJSIP/101-00000143", "CONNECTEDLINE(name,i)=Test Eco") in new stack
   -- Executing [*43@from-internal:3] Set("PJSIP/101-00000143", "CONNECTEDLINE(num,i)=*43") in new stack
   -- Executing [*43@from-internal:4] Answer("PJSIP/101-00000143", "") in new stack
      > 0x7fc0940e4a80 -- Strict RTP learning after remote address set to: 10.7.208.157:50248
      > 0x7fc0941034e0 -- Strict RTP learning after remote address set to: 10.7.208.157:50246
      > 0x7fc0940e4a80 -- Strict RTP qualifying stream type: audio
      > 0x7fc0940e4a80 -- Strict RTP switching source address to 10.168.5.201:39519
   -- Executing [*43@from-internal:5] Set("PJSIP/101-00000143", "JITTERBUFFER(adaptive)=default") in new stack
   -- Executing [*43@from-internal:6] Macro("PJSIP/101-00000143", "user-callerid,") in new stack
   -- Executing [s@macro-user-callerid:1] Set("PJSIP/101-00000143", "TOUCH_MONITOR=1636707571.457") in new stack
   -- Executing [s@macro-user-callerid:2] Set("PJSIP/101-00000143", "AMPUSER=101") in new stack
   -- Executing [s@macro-user-callerid:3] Set("PJSIP/101-00000143", "HOTDESCKCHAN=101-00000143") in new stack
   -- Executing [s@macro-user-callerid:4] Set("PJSIP/101-00000143", "HOTDESKEXTEN=101") in new stack
   -- Executing [s@macro-user-callerid:5] Set("PJSIP/101-00000143", "HOTDESKCALL=0") in new stack

更改了 PBX Asterisk 16.13.0(相同的物理電話)但相同的行為:

                                            ...........Receive......... .........Transmit..........
BridgeId ChannelId ........ UpTime.. Codec.   Count    Lost Pct  Jitter   Count    Lost Pct  Jitter RTT....
===========================================================================================================

         101-00000144       00:00:34 ulaw     1744     917K 52608   0.000   1727       0    0   0.003   0.006

檢查所有設備上的 ptime 是否相等!

引用自:https://unix.stackexchange.com/questions/677567