Назад | Перейти на главную страницу

WebRTC на автономной звездочке - без звука

После нескольких недель борьбы с Asterisk для WebRTC я решил разместить свою проблему на этом форуме. Моя проблема заключается в следующем:

Я не получаю звук от WebRTC к клиентам WebRTC. Я работаю в локальной сети.

Ситуация - вызов с JSSIP на JSSIP (тот же клиент) с автономным сервером Asterisk.

Проблема

При звонке с 6001 (JSSIP) на 6002 (JSSIP) звук вообще отсутствует. Через некоторое время некоторые RTP-пакеты отправляются, но не принимаются. Примерно через 40 секунд после того, как пакеты RTP появляются в файлах журнала, вызов завершается без каких-либо действий человека.

Оба клиента находятся на одном компьютере, оба в Google Chrome, где один из них работает в режиме инкогнито. Мы также тестировали 2 разных ноутбука, но это дало одинаковые результаты.

Кто-нибудь знает, что вызывает эту проблему? Я также следил за этой темой: http://forums.digium.com/viewtopic.php?f=1&t=90167 , но у меня это не сработало. Вы можете найти файлы журнала и дополнительную информацию ниже.

Что я пытался решить эту проблему, из-за нескольких сообщений об одной и той же проблеме.

Сервер Asterisk:

Клиент:

Конфигурации:

rtp.conf

[general]
rtpstart=10000
rtpend=20000
icesupport=yes
stunaddr=74.125.132.127:19302

http.conf

[general]
enabled=yes
enablestatic=no
bindaddr=0.0.0.0
bindport=8088

sip.conf

[general]
port=5060
bindaddr=192.168.178.203
transport=ws,wss,udp

[6001]
host=dynamic
secret=6001
context=internal
type=friend
transport=ws,wss,udp
encryption=yes
avpf=yes
force_avp=yes
icesupport=yes
directmedia=outgoing
disallow=all
allow=opus,ulaw,vp8
dtlsenable=yes
dtlsverify=fingerprint
dtlscertfile=/etc/asterisk/keys/default.pem
dtlscafile=/etc/asterisk/keys/ca.crt
dtlssetup=actpass
nat=no

[6002]
host=dynamic
secret=6002
context=internal
type=friend
transport=ws,wss,udp
encryption=yes
avpf=yes
force_avp=yes
icesupport=yes
directmedia=outgoing
disallow=all
allow=opus,ulaw,vp8
dtlsenable=yes
dtlsverify=fingerprint
dtlscertfile=/etc/asterisk/keys/default.pem
dtlscafile=/etc/asterisk/keys/ca.crt
dtlssetup=actpass
nat=no

extension.conf

[internal]
exten => 6001,1,Dial(SIP/6001)
exten => 6002,1,Dial(SIP/6002)

логирование

Полный журнал сервера здесь: http://pastebin.com/qHwzXbbd

Часть логирования сервера с включенной отладкой sip и rtp.

<------------>
Scheduling destruction of SIP dialog '0vreoff3cjblcgubthf1df' in 32000 ms (Method: REGISTER)

<--- SIP read from WS:192.168.178.18:55387 --->
INVITE sip:6002@192.168.178.203:5060 SIP/2.0
Via: SIP/2.0/WS 1t4mt0723j5t.invalid;branch=z9hG4bK7239492
Max-Forwards: 69
To: <sip:6002@192.168.178.203:5060>
From: "6001" <sip:6001@192.168.178.203:5060>;tag=lq9ascrlba
Call-ID: sf6m6uln2amn2lhuuvia
CSeq: 7253 INVITE
X-Can-Renegotiate: undefined
Contact: <sip:vkk702nd@1t4mt0723j5t.invalid;transport=ws;ob>
Content-Type: application/sdp
Session-Expires: 90
Allow: INVITE,ACK,CANCEL,BYE,UPDATE,MESSAGE,OPTIONS
Supported: timer,ice,outbound
User-Agent: JsSIP 0.6.18
Content-Length: 4710

v=0
o=- 5530171873894353207 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio video
a=msid-semantic: WMS bEWKeIMVkeE6PTP0lgDPhtJoGfmy7MeXYx0v
m=audio 62227 RTP/SAVPF 111 103 104 9 0 8 106 105 13 126
c=IN IP4 192.168.12.1
a=rtcp:62227 IN IP4 192.168.12.1
a=candidate:3708951358 1 udp 2122129151 192.168.12.1 62227 typ host generation 0
a=candidate:3708951358 2 udp 2122129151 192.168.12.1 62227 typ host generation 0
a=candidate:3242410012 1 udp 2122063615 25.124.74.215 62228 typ host generation 0
a=candidate:3242410012 2 udp 2122063615 25.124.74.215 62228 typ host generation 0
a=candidate:1867667642 1 udp 2121998079 192.168.254.1 62229 typ host generation 0
a=candidate:1867667642 2 udp 2121998079 192.168.254.1 62229 typ host generation 0
a=candidate:1340102981 1 udp 2121932543 192.168.178.18 62230 typ host generation 0
a=candidate:1340102981 2 udp 2121932543 192.168.178.18 62230 typ host generation 0
a=candidate:2475812814 1 tcp 1518149375 192.168.12.1 0 typ host tcptype active generation 0
a=candidate:2475812814 2 tcp 1518149375 192.168.12.1 0 typ host tcptype active generation 0
a=candidate:2411773164 1 tcp 1518083839 25.124.74.215 0 typ host tcptype active generation 0
a=candidate:2411773164 2 tcp 1518083839 25.124.74.215 0 typ host tcptype active generation 0
a=candidate:567387210 1 tcp 1518018303 192.168.254.1 0 typ host tcptype active generation 0
a=candidate:567387210 2 tcp 1518018303 192.168.254.1 0 typ host tcptype active generation 0
a=candidate:23307701 1 tcp 1517952767 192.168.178.18 0 typ host tcptype active generation 0
a=candidate:23307701 2 tcp 1517952767 192.168.178.18 0 typ host tcptype active generation 0
a=ice-ufrag:KUz2P70p6fRKTNhU
a=ice-pwd:uSSZZuV537KDmpbtSzusDKLK
a=ice-options:google-ice
a=fingerprint:sha-256 E8:85:6A:27:CF:E0:50:A7:4B:E5:4D:25:70:76:D4:F1:5D:8D:79:93:40:4B:2E:6B:40:1D:F0:35:B9:38:56:E3
a=setup:actpass
a=mid:audio
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=sendrecv
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:106 CN/32000
a=rtpmap:105 CN/16000
a=rtpmap:13 CN/8000
a=rtpmap:126 telephone-event/8000
a=maxptime:60
a=ssrc:831281522 cname:+qS2XmtyXWZX3uFI
a=ssrc:831281522 msid:bEWKeIMVkeE6PTP0lgDPhtJoGfmy7MeXYx0v dc973b27-9b15-4cdd-bbf8-80807c4d3b1d
a=ssrc:831281522 mslabel:bEWKeIMVkeE6PTP0lgDPhtJoGfmy7MeXYx0v
a=ssrc:831281522 label:dc973b27-9b15-4cdd-bbf8-80807c4d3b1d
m=video 62227 RTP/SAVPF 100 116 117 96
c=IN IP4 192.168.12.1
a=rtcp:62227 IN IP4 192.168.12.1
a=candidate:3708951358 1 udp 2122129151 192.168.12.1 62227 typ host generation 0
a=candidate:3708951358 2 udp 2122129151 192.168.12.1 62227 typ host generation 0
a=candidate:3242410012 1 udp 2122063615 25.124.74.215 62228 typ host generation 0
a=candidate:3242410012 2 udp 2122063615 25.124.74.215 62228 typ host generation 0
a=candidate:1867667642 1 udp 2121998079 192.168.254.1 62229 typ host generation 0
a=candidate:1867667642 2 udp 2121998079 192.168.254.1 62229 typ host generation 0
a=candidate:1340102981 1 udp 2121932543 192.168.178.18 62230 typ host generation 0
a=candidate:1340102981 2 udp 2121932543 192.168.178.18 62230 typ host generation 0
a=candidate:2475812814 1 tcp 1518149375 192.168.12.1 0 typ host tcptype active generation 0
a=candidate:2475812814 2 tcp 1518149375 192.168.12.1 0 typ host tcptype active generation 0
a=candidate:2411773164 1 tcp 1518083839 25.124.74.215 0 typ host tcptype active generation 0
a=candidate:2411773164 2 tcp 1518083839 25.124.74.215 0 typ host tcptype active generation 0
a=candidate:567387210 1 tcp 1518018303 192.168.254.1 0 typ host tcptype active generation 0
a=candidate:567387210 2 tcp 1518018303 192.168.254.1 0 typ host tcptype active generation 0
a=candidate:23307701 1 tcp 1517952767 192.168.178.18 0 typ host tcptype active generation 0
a=candidate:23307701 2 tcp 1517952767 192.168.178.18 0 typ host tcptype active generation 0
a=ice-ufrag:KUz2P70p6fRKTNhU
a=ice-pwd:uSSZZuV537KDmpbtSzusDKLK
a=ice-options:google-ice
a=fingerprint:sha-256 E8:85:6A:27:CF:E0:50:A7:4B:E5:4D:25:70:76:D4:F1:5D:8D:79:93:40:4B:2E:6B:40:1D:F0:35:B9:38:56:E3
a=setup:actpass
a=mid:video
a=extmap:2 urn:ietf:params:rtp-hdrext:toffset
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=recvonly
a=rtcp-mux
a=rtpmap:100 VP8/90000
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=rtcp-fb:100 goog-remb
a=rtpmap:116 red/90000
a=rtpmap:117 ulpfec/90000
a=rtpmap:96 rtx/90000
a=fmtp:96 apt=100
<------------->
--- (15 headers 89 lines) ---
Using INVITE request as basis request - sf6m6uln2amn2lhuuvia
Found peer '6001' for '6001' from 192.168.178.18:55387

<--- Reliably Transmitting (no NAT) to 192.168.178.18:5060 --->
SIP/2.0 401 Unauthorized
Via: SIP/2.0/WS 1t4mt0723j5t.invalid;branch=z9hG4bK7239492;received=192.168.178.18
From: "6001" <sip:6001@192.168.178.203:5060>;tag=lq9ascrlba
To: <sip:6002@192.168.178.203:5060>;tag=as6ed0dbe4
Call-ID: sf6m6uln2amn2lhuuvia
CSeq: 7253 INVITE
Server: FPBX-12.0.37(13.431072M)
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE
Supported: replaces, timer
WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="263201da"
Content-Length: 0
<------------>
10:57:50.828 utsx0x7f967800  ...STUN client transaction created
10:57:50.828 utsx0x7f967800  ...STUN sending message (transmit count=1)
10:57:50.828 icess0x7f970c0  ..Check 7: [2] 192.168.178.203:18141-->192.168.178.18:62230: state changed from Frozen to In Progress
10:57:50.839 utsx0x7f967800  STUN sending message (transmit count=2)
10:57:50.839 utsx0x7f967800  STUN sending message (transmit count=2)
10:57:50.850 icess0x7f970c0  Starting checklist periodic check
10:57:50.851 icess0x7f970c0  Starting checklist periodic check
10:57:50.861 utsx0x7f967800  STUN sending message (transmit count=2)
10:57:50.862 utsx0x7f967800  STUN sending message (transmit count=2)

10:57:53.770 stuse0x7f96fc0  ..TX 80 bytes STUN message to 192.168.178.18:62261:
--- begin STUN message ---
STUN Binding success response
Hdr: length=60, magic=2112a442, tsx_id=6d4d564652372f537652314a
Attributes:
  XOR-MAPPED-ADDRESS: length=8, IPv4 addr=192.168.178.18:62261
  SOFTWARE: length=12, value="pjnath-2.3.0"
  MESSAGE-INTEGRITY: length=20, data=0204b9b98f375d27e045e50bd034f1ce99288e06
  FINGERPRINT: length=4, value=1908015627 (0x71ba020b)
--- end of STUN message ---

10:57:55.586 utsx0x7f96f800  .....STUN client transaction created
10:57:55.586 utsx0x7f96f800  .....STUN sending message (transmit count=1)
10:57:55.586 icess0x7f96fc0  ....Check 7: [2] 192.168.178.203:13265-->192.168.178.18:62253: state changed from Frozen to In Progress
10:57:55.586 icess0x7f96fc0  .Performing delayed triggerred check for component 1
10:57:55.586 icess0x7f96fc0  ..Triggered check for check 6 not performed because it's in progress. Retransmitting
10:57:55.586 utsx0x7f96f801  ...STUN sending message (transmit count=1)
10:57:55.586 icess0x7f96fc0  .Performing delayed triggerred check for component 2
10:57:55.586 icess0x7f96fc0  ..Triggered check for check 7 not performed because it's in progress. Retransmitting

10:58:41.301 icess0x7f96fc0  .Triggered check for check 7 not performed because it's completed
10:58:41.301 icess0x7f96fc0  ..Check 7 is successful  and nominated
Sent RTP packet to      192.168.178.18:62249 (via ICE) (type 00, seq 020194, ts 004320, len 000160)
Sent RTP packet to      192.168.178.18:62249 (via ICE) (type 00, seq 020195, ts 004480, len 000160)
10:58:41.509 stuse0x7f970c0 !Response cache deleted
10:58:41.509 stun_session.c  tdata 0x7f96fc02cac8 destroy request, force=0, tsx=(nil)
Sent RTP packet to      192.168.178.18:62249 (via ICE) (type 00, seq 020204, ts 005920, len 000160)
10:58:41.519 stuse0x7f970c0  Response cache deleted

Я надеюсь, что кто-то может указать мне в каком-то направлении, или что кто-то столкнулся с той же проблемой и готов поделиться своими знаниями.

Для получения дополнительной информации, не стесняйтесь спрашивать меня.

Заранее спасибо.

Конфигурация и настройка вызова выглядят нормально. Было бы очень важно увидеть ответ 200 OK. Также вы должны включить журналы webrtc в браузере и также проверить это (или отправить здесь), чтобы мы могли видеть, куда он на самом деле отправляет (в кодировке DTLS) SRTP.

Вот подробное описание Настройка WebRTC в Asterisk 13.

Также, возможно, стоит попробовать запустить звездочку на общедоступном адресе (или дважды проверить всю его конфигурацию частного IP / общедоступного IP / NAT), потому что по умолчанию он будет пытаться обнаружить и использовать ваш общедоступный IP в сигнализации SIP.