尝试组合Freeswitch+WebRTC+RTMP+jsSIP。对于NAT穿越,我使用STUN服务器。在Chrome中一切都很好,但在FF中只有单向声音。在tcpdump中,我看不到从freeswitch到abonent的RTP。但请参阅rtp到freeswitch。我在FF的RTMP也有类似的情况。有什么想法吗?这是我的日志:
Freeswitch debug:
freeswitch@internal> 2015-03-05 15:24:04.764229 [NOTICE] switch_channel.c:1055 New Channel sofia/internal/97487336@52.11.173.157 [91822106-c375-11e4-ae79-0dedd8f6626f]
2015-03-05 15:24:04.764229 [DEBUG] switch_core_session.c:1061 Send signal sofia/internal/97487336@52.11.173.157 [BREAK]
2015-03-05 15:24:04.764229 [DEBUG] switch_core_session.c:1061 Send signal sofia/internal/97487336@52.11.173.157 [BREAK]
2015-03-05 15:24:04.764229 [DEBUG] switch_core_state_machine.c:472 (sofia/internal/97487336@52.11.173.157) Running State Change CS_NEW
2015-03-05 15:24:04.764229 [DEBUG] sofia.c:8844 sofia/internal/97487336@52.11.173.157 receiving invite from 195.54.42.58:51524 version: 1.5.15b git 3a70750 2015-03-04 19:06:18Z 64bit
2015-03-05 15:24:04.764229 [DEBUG] switch_core_session.c:1061 Send signal sofia/internal/97487336@52.11.173.157 [BREAK]
2015-03-05 15:24:04.764229 [DEBUG] sofia.c:2065 detaching session 91822106-c375-11e4-ae79-0dedd8f6626f
2015-03-05 15:24:04.764229 [DEBUG] switch_core_state_machine.c:491 (sofia/internal/97487336@52.11.173.157) State NEW
2015-03-05 15:24:05.024229 [DEBUG] sofia.c:2173 Re-attaching to session 91822106-c375-11e4-ae79-0dedd8f6626f
2015-03-05 15:24:05.024229 [DEBUG] switch_core_session.c:1061 Send signal sofia/internal/97487336@52.11.173.157 [BREAK]
2015-03-05 15:24:05.024229 [DEBUG] switch_core_session.c:1061 Send signal sofia/internal/97487336@52.11.173.157 [BREAK]
2015-03-05 15:24:05.044232 [DEBUG] sofia.c:8844 sofia/internal/97487336@52.11.173.157 receiving invite from 195.54.42.58:51524 version: 1.5.15b git 3a70750 2015-03-04 19:06:18Z 64bit
2015-03-05 15:24:05.044232 [DEBUG] switch_xml.c:2008 Cache Info
Time Now: 1425587045044232
Expires: 1425586902484231
2015-03-05 15:24:05.044232 [DEBUG] switch_xml.c:2010 Cache expired for 97487336@172.31.47.5, doing fresh lookup
2015-03-05 15:24:05.044232 [DEBUG] switch_xml.c:2088 caching lookup for user 97487336@172.31.47.5 for 0 milliseconds
2015-03-05 15:24:05.044232 [DEBUG] sofia.c:10109 Setting NAT mode based on websockets
2015-03-05 15:24:05.044232 [DEBUG] sofia.c:6623 Channel sofia/internal/97487336@52.11.173.157 entering state [received][100]
2015-03-05 15:24:05.044232 [DEBUG] sofia.c:6633 Remote SDP:
v=0
o=Mozilla-SIPUA-35.0.1 3612 0 IN IP4 0.0.0.0
s=SIP Call
t=0 0
a=ice-ufrag:8ea45330
a=ice-pwd:4e78b1d5d159b6ee310a347e052ee5f9
a=fingerprint:sha-256 D7:50:B9:35:92:DB:35:2F:49:52:DC:AD:98:7F:6E:EA:C0:D3:B4:81:EB:E4:93:BF:A5:97:EC:DC:10:FC:DF:72
m=audio 9 RTP/SAVPF 109 9 0 8 101
c=IN IP4 0.0.0.0
a=rtpmap:109 opus/48000/2
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=ptime:20
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=setup:actpass
a=rtcp-mux
a=candidate:0 1 UDP 2128609535 192.168.1.101 52871 typ host
a=candidate:0 2 UDP 2128609534 192.168.1.101 52872 typ host
a=candidate:1 1 UDP 1692467199 195.54.42.58 64326 typ srflx raddr 192.168.1.101 rport 52871
a=candidate:1 2 UDP 1692467198 195.54.42.58 64107 typ srflx raddr 192.168.1.101 rport 52872
2015-03-05 15:24:05.044232 [DEBUG] sofia.c:6899 (sofia/internal/97487336@52.11.173.157) State Change CS_NEW -> CS_INIT
2015-03-05 15:24:05.044232 [DEBUG] switch_core_session.c:1396 Send signal sofia/internal/97487336@52.11.173.157 [BREAK]
2015-03-05 15:24:05.044232 [DEBUG] switch_core_state_machine.c:472 (sofia/internal/97487336@52.11.173.157) Running State Change CS_INIT
2015-03-05 15:24:05.044232 [DEBUG] switch_core_state_machine.c:512 (sofia/internal/97487336@52.11.173.157) State INIT
2015-03-05 15:24:05.044232 [DEBUG] mod_sofia.c:87 sofia/internal/97487336@52.11.173.157 SOFIA INIT
2015-03-05 15:24:05.044232 [DEBUG] switch_core_state_machine.c:40 sofia/internal/97487336@52.11.173.157 Standard INIT
2015-03-05 15:24:05.044232 [DEBUG] switch_core_state_machine.c:48 (sofia/internal/97487336@52.11.173.157) State Change CS_INIT -> CS_ROUTING
2015-03-05 15:24:05.044232 [DEBUG] switch_core_session.c:1396 Send signal sofia/internal/97487336@52.11.173.157 [BREAK]
2015-03-05 15:24:05.044232 [DEBUG] switch_core_state_machine.c:512 (sofia/internal/97487336@52.11.173.157) State INIT going to sleep
2015-03-05 15:24:05.044232 [DEBUG] switch_core_state_machine.c:472 (sofia/internal/97487336@52.11.173.157) Running State Change CS_ROUTING
2015-03-05 15:24:05.044232 [DEBUG] switch_channel.c:2184 (sofia/internal/97487336@52.11.173.157) Callstate Change DOWN -> RINGING
2015-03-05 15:24:05.044232 [DEBUG] switch_core_state_machine.c:528 (sofia/internal/97487336@52.11.173.157) State ROUTING
2015-03-05 15:24:05.044232 [DEBUG] mod_sofia.c:123 sofia/internal/97487336@52.11.173.157 SOFIA ROUTING
2015-03-05 15:24:05.044232 [DEBUG] switch_core_state_machine.c:166 sofia/internal/97487336@52.11.173.157 Standard ROUTING
2015-03-05 15:24:05.044232 [INFO] mod_dialplan_xml.c:635 Processing 97487336 <97487336>->wrtc_24088503 in context default
2015-03-05 15:24:06.324312 [DEBUG] switch_core_session.c:1061 Send signal sofia/internal/97487336@52.11.173.157 [BREAK]
2015-03-05 15:24:06.324312 [NOTICE] mod_sofia.c:2107 Ring-Ready sofia/internal/97487336@52.11.173.157!
Content-Length: 0
" " +228ms" jssip-0.6.18.js:21376
"message" "Registered" voip.js:382
"status.active" Arguments { 0: "status.active", ещё 2… } voip.js:25
"JsSIP:Transport " "received WebSocket text message:
NOTIFY sip:4em2vv3j@onkt63k1mjvi.invalid;transport=ws SIP/2.0
Via: SIP/2.0/WS 52.11.173.157:5066;rport;branch=z9hG4bKaaQUBj83F53yK
Route: <sip:4em2vv3j@195.54.42.58:52764>;transport=ws
Max-Forwards: 70
From: <sip:97487336@52.11.173.157>;tag=r9gyFg2Nr962m
To: <sip:97487336@52.11.173.157>
Call-ID: 0e6acf51-3e18-1233-2f9a-0267945f27aa
CSeq: 72457382 NOTIFY
Contact: <sip:mod_sofia@52.11.173.157:5060>
User-Agent: FreeSWITCH-mod_sofia/1.5.15b+git~20150304T190618Z~3a70750b42~64bit
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY, PUBLISH, SUBSCRIBE
Supported: path, replaces
Event: message-summary
Allow-Events: talk, hold, conference, presence, as-feature-event, dialog, line-seize, call-info, sla, include-session-description, presence.winfo, message-summary, refer
Subscription-State: terminated;reason=noresource
Content-Type: application/simple-message-summary
Content-Length: 67
Messages-Waiting: no
Message-Account: sip:97487336@172.31.47.5
" " +64ms" jssip-0.6.18.js:21376
"JsSIP:Transport " "sending WebSocket message:
SIP/2.0 405 Method Not Allowed
Via: SIP/2.0/WS 52.11.173.157:5066;rport;branch=z9hG4bKaaQUBj83F53yK
To: <sip:97487336@52.11.173.157>;tag=9cvrud8hud
From: <sip:97487336@52.11.173.157>;tag=r9gyFg2Nr962m
Call-ID: 0e6acf51-3e18-1233-2f9a-0267945f27aa
CSeq: 72457382 NOTIFY
Allow: INVITE,ACK,CANCEL,BYE,UPDATE,MESSAGE,OPTIONS
Supported: outbound
Content-Length: 0
" " +8ms" jssip-0.6.18.js:21376
"JsSIP:NonInviteServerTransaction " "Timer J expired for transaction z9hG4bKaaQUBj83F53yK" " +30ms" jssip-0.6.18.js:21376
"callUp.before" Arguments { 0: "callUp.before", 1: 12, 2: undefined, ещё 2… } voip.js:25
"api.call.begin" Arguments { 0: "api.call.begin", 1: Object, 2: VoIP</GUI_pv.prototype.apiCallBegin/<(), ещё 2… } voip.js:25
"API create call response" Object { result: true, outCallId: 111, inCallId: 222 } voip.js:376
"status.inactive" Arguments { 0: "status.inactive", ещё 2… } voip.js:25
"init" Arguments { 0: "init", 1: Object, ещё 2… } popup.js:25
"JsSIP " "version 0.6.18" " +0ms" jssip-0.6.18.js:21376
"rtcninja " "version 0.5.0" " +3ms" jssip-0.6.18.js:21376
"rtcninja " "detected browser: Firefox 35.0 [mobile:false, tablet:false, android:false, ios:false]" " +1ms" jssip-0.6.18.js:21376
"JsSIP:UA " "configuration parameters after validation:" " +65ms" jssip-0.6.18.js:21376
"JsSIP:UA " "- via_host: "v3esbi87ujtn.invalid"" " +0ms" jssip-0.6.18.js:21376
"JsSIP:UA " "- password: NOT SHOWN" " +0ms" jssip-0.6.18.js:21376
"JsSIP:UA " "- register_expires: 600" " +0ms" jssip-0.6.18.js:21376
"JsSIP:UA " "- register: false" " +1ms" jssip-0.6.18.js:21376
"JsSIP:UA " "- registrar_server: sip:52.11.173.157" " +0ms" jssip-0.6.18.js:21376
"JsSIP:UA " "- ws_server_max_reconnection: 3" " +0ms" jssip-0.6.18.js:21376
"JsSIP:UA " "- ws_server_reconnection_timeout: 4" " +0ms" jssip-0.6.18.js:21376
"JsSIP:UA " "- connection_recovery_min_interval: 2" " +0ms" jssip-0.6.18.js:21376
"JsSIP:UA " "- connection_recovery_max_interval: 30" " +1ms" jssip-0.6.18.js:21376
"JsSIP:UA " "- use_preloaded_route: false" " +0ms" jssip-0.6.18.js:21376
"JsSIP:UA " "- no_answer_timeout: 30000" " +0ms" jssip-0.6.18.js:21376
"JsSIP:UA " "- session_timers: false" " +0ms" jssip-0.6.18.js:21376
"JsSIP:UA " "- hack_via_tcp: false" " +0ms" jssip-0.6.18.js:21376
"JsSIP:UA " "- hack_via_ws: false" " +0ms" jssip-0.6.18.js:21376
"JsSIP:UA " "- hack_ip_in_contact: false" " +0ms" jssip-0.6.18.js:21376
"JsSIP:UA " "- node_websocket_options: {}" " +0ms" jssip-0.6.18.js:21376
"JsSIP:UA " "- uri: sip:97487336@52.11.173.157" " +0ms" jssip-0.6.18.js:21376
"JsSIP:UA " "- ws_servers: [{"ws_uri":"ws://52.11.173.157:5066","sip_uri":"<sip:52.11.173.157:5066;transport=ws;lr>","weight":0,"status":0,"scheme":"WS"}]" " +0ms" jssip-0.6.18.js:21376
"JsSIP:UA " "- instance_id: "cda27030-e4d7-405e-a8f8-7961814b0c2b"" " +0ms" jssip-0.6.18.js:21376
"JsSIP:UA " "- jssip_id: "13942"" " +1ms" jssip-0.6.18.js:21376
"JsSIP:UA " "- hostport_params: "52.11.173.157"" " +0ms" jssip-0.6.18.js:21376
"JsSIP:UA " "- authorization_user: "97487336"" " +0ms" jssip-0.6.18.js:21376
"rtcninja " "WebRTC supported" " +1ms" jssip-0.6.18.js:21376
"JsSIP:UA " "start()" " +0ms" jssip-0.6.18.js:21376
"JsSIP:Transport " "connecting to WebSocket ws://52.11.173.157:5066" " +1ms" jssip-0.6.18.js:21376
GET http://52.11.173.157:5066/ [HTTP/1.1 101 Switching Protocols 430мс]
"JsSIP:Transport " "WebSocket ws://52.11.173.157:5066 connected" " +500ms" jssip-0.6.18.js:21376
"message" "Connection success" popup.js:382
"ready" Arguments { 0: "ready", 1: Object, ещё 2… } popup.js:25
"callUp.before" Arguments { 0: "callUp.before", 1: "wrtc_24088503", 2: "Alex 2", ещё 2… } popup.js:25
"callUp_before" "Alex 2" popup.js:376
"message" "Give access to your microphone" popup.js:382
"JsSIP:UA " "call()" " +1ms" jssip-0.6.18.js:21376
"JsSIP:RTCSession " "new" " +1ms" jssip-0.6.18.js:21376
"JsSIP:RTCSession " "connect()" " +0ms" jssip-0.6.18.js:21376
"rtcninja:RTCPeerConnection " "new | pcConfig:" " +7ms" Object { iceServers: Array[1] } jssip-0.6.18.js:21376
"rtcninja:RTCPeerConnection " "setConfigurationAndOptions | processed pcConfig:" " +0ms" Object { iceServers: Array[1] } jssip-0.6.18.js:21376
"JsSIP:RTCSession " "newRTCSession" " +150ms" jssip-0.6.18.js:21376
"debug" "newRTCSession" Object { originator: "local", session: Object, request: Object } popup.js:376
"debug" "add session" Object { ua: Object, status: 0, dialog: null, earlyDialogs: Object, connection: Object, is_confirmed: false, late_sdp: false, rtcOfferConstraints: null, rtcAnswerConstraints: null, localMediaStream: null, ещё 24… } popup.js:376
"rtcninja:Adapter " "getUserMedia() | constraints:" " +0ms" Object { audio: true, video: false } jssip-0.6.18.js:21376
"callUp" Arguments { 0: "callUp", ещё 2… } popup.js:25
"rtcninja:Adapter " "getUserMedia() | success" " +2s" jssip-0.6.18.js:21376
"rtcninja:RTCPeerConnection " "addStream() | stream:" " +0ms" LocalMediaStream { currentTime: 0 } jssip-0.6.18.js:21376
"JsSIP:RTCSession " "session connecting" " +1ms" jssip-0.6.18.js:21376
"message" "Connecting with user..." popup.js:382
"outgoingCall.connect" Arguments { 0: "outgoingCall.connect", ещё 2… } popup.js:25
"JsSIP:RTCSession " "createLocalDescription()" " +1ms" jssip-0.6.18.js:21376
"rtcninja:RTCPeerConnection " "createOffer()" " +0ms" jssip-0.6.18.js:21376
"rtcninja:RTCPeerConnection " "createOffer() | success" " +2ms" jssip-0.6.18.js:21376
"rtcninja:RTCPeerConnection " "setLocalDescription()" " +0ms" jssip-0.6.18.js:21376
"rtcninja:RTCPeerConnection " "setLocalDescription() | success" " +10ms" jssip-0.6.18.js:21376
"JsSIP:Transport " "sending WebSocket message:
INVITE sip:wrtc_24088503@52.11.173.157 SIP/2.0
Via: SIP/2.0/WS v3esbi87ujtn.invalid;branch=z9hG4bK9913060
Max-Forwards: 69
To: <sip:wrtc_24088503@52.11.173.157>
From: <sip:97487336@52.11.173.157>;tag=i9oi2j4lsi
Call-ID: 13942n4ifccgdi8s0rr0
CSeq: 9521 INVITE
Contact: <sip:aake2452@v3esbi87ujtn.invalid;transport=ws;ob>
Content-Type: application/sdp
Allow: INVITE,ACK,CANCEL,BYE,UPDATE,MESSAGE,OPTIONS
Supported: ice,outbound
User-Agent: JsSIP 0.6.18
Content-Length: 871
v=0
o=Mozilla-SIPUA-35.0.1 18073 0 IN IP4 0.0.0.0
s=SIP Call
t=0 0
a=ice-ufrag:c2ab2cd2
a=ice-pwd:49ebd6ec4e8cd8dff4d90fbb1db04feb
a=fingerprint:sha-256 12:CE:48:7D:B4:2C:FB:03:C4:DF:F5:0E:7D:E7:02:DF:0A:5D:06:A8:99:41:82:D4:91:79:4F:7D:BC:53:3A:0F
m=audio 9 RTP/SAVPF 109 9 0 8 101
c=IN IP4 0.0.0.0
a=rtpmap:109 opus/48000/2
a=ptime:20
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=sendrecv
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=setup:actpass
a=rtcp-mux
a=candidate:0 1 UDP 2128609535 192.168.1.101 55983 typ host
a=candidate:0 2 UDP 2128609534 192.168.1.101 55984 typ host
a=candidate:1 1 UDP 1692467199 195.54.42.58 53117 typ srflx raddr 192.168.1.101 rport 55983
a=candidate:1 2 UDP 1692467198 195.54.42.58 60365 typ srflx raddr 192.168.1.101 rport 55984
" " +3ms" jssip-0.6.18.js:21376
"rtcninja:RTCPeerConnection " "onsignalingstatechange() | signalingState: have-local-offer" " +0ms" jssip-0.6.18.js:21376
"rtcninja:RTCPeerConnection " "onicecandidate() | m0(no mid) candidate:0 1 UDP 2128609535 192.168.1.101 55983 typ host" " +1ms" jssip-0.6.18.js:21376
"rtcninja:RTCPeerConnection " "onicecandidate() | m0(no mid) candidate:0 2 UDP 2128609534 192.168.1.101 55984 typ host" " +1ms" jssip-0.6.18.js:21376
"rtcninja:RTCPeerConnection " "onicecandidate() | m0(no mid) candidate:1 1 UDP 1692467199 195.54.42.58 53117 typ srflx raddr 192.168.1.101 rport 55983" " +1ms" jssip-0.6.18.js:21376
"rtcninja:RTCPeerConnection " "onicecandidate() | m0(no mid) candidate:1 2 UDP 1692467198 195.54.42.58 60365 typ srflx raddr 192.168.1.101 rport 55984" " +0ms" jssip-0.6.18.js:21376
"rtcninja:RTCPeerConnection " "onicecandidate() | end of candidates" " +1ms" jssip-0.6.18.js:21376
"JsSIP:Transport " "received WebSocket text message:
SIP/2.0 100 Trying
Via: SIP/2.0/WS v3esbi87ujtn.invalid;branch=z9hG4bK9913060;received=195.54.42.58;rport=63980
From: <sip:97487336@52.11.173.157>;tag=i9oi2j4lsi
To: <sip:wrtc_24088503@52.11.173.157>
Call-ID: 13942n4ifccgdi8s0rr0
CSeq: 9521 INVITE
User-Agent: FreeSWITCH-mod_sofia/1.5.15b+git~20150304T190618Z~3a70750b42~64bit
Content-Length: 0
" " +343ms" jssip-0.6.18.js:21376
"JsSIP:RTCSession " "receiveInviteResponse()" " +16ms" jssip-0.6.18.js:21376
"JsSIP:Transport " "received WebSocket text message:
SIP/2.0 407 Proxy Authentication Required
Via: SIP/2.0/WS v3esbi87ujtn.invalid;branch=z9hG4bK9913060;received=195.54.42.58;rport=63980
From: <sip:97487336@52.11.173.157>;tag=i9oi2j4lsi
To: <sip:wrtc_24088503@52.11.173.157>;tag=SjaQHBKSNjXNg
Call-ID: 13942n4ifccgdi8s0rr0
CSeq: 9521 INVITE
User-Agent: FreeSWITCH-mod_sofia/1.5.15b+git~20150304T190618Z~3a70750b42~64bit
Accept: application/sdp
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY, PUBLISH, SUBSCRIBE
Supported: path, replaces
Allow-Events: talk, hold, conference, presence, as-feature-event, dialog, line-seize, call-info, sla, include-session-description, presence.winfo, message-summary, refer
Proxy-Authenticate: Digest realm="52.11.173.157", nonce="3c76ea02-c375-11e4-ae53-0dedd8f6626f", algorithm=MD5, qop="auth"
Content-Length: 0
" " +1ms" jssip-0.6.18.js:21376
"JsSIP:Transport " "sending WebSocket message:
ACK sip:wrtc_24088503@52.11.173.157 SIP/2.0
Via: SIP/2.0/WS v3esbi87ujtn.invalid;branch=z9hG4bK9913060
To: <sip:wrtc_24088503@52.11.173.157>;tag=SjaQHBKSNjXNg
From: <sip:97487336@52.11.173.157>;tag=i9oi2j4lsi
Call-ID: 13942n4ifccgdi8s0rr0
CSeq: 9521 ACK
Content-Length: 0
" " +9ms" jssip-0.6.18.js:21376
"JsSIP:Transport " "sending WebSocket message:
INVITE sip:wrtc_24088503@52.11.173.157 SIP/2.0
Via: SIP/2.0/WS v3esbi87ujtn.invalid;branch=z9hG4bK1611429
Max-Forwards: 69
To: <sip:wrtc_24088503@52.11.173.157>
From: <sip:97487336@52.11.173.157>;tag=i9oi2j4lsi
Call-ID: 13942n4ifccgdi8s0rr0
CSeq: 9522 INVITE
Proxy-Authorization: Digest algorithm=MD5, username="97487336", realm="52.11.173.157", nonce="3c76ea02-c375-11e4-ae53-0dedd8f6626f", uri="sip:wrtc_24088503@52.11.173.157", response="efbefd849d15b696cac323f507bba3b2", qop=auth, cnonce="m7lmpr5toqpg", nc=00000001
Contact: <sip:aake2452@v3esbi87ujtn.invalid;transport=ws;ob>
Content-Type: application/sdp
Allow: INVITE,ACK,CANCEL,BYE,UPDATE,MESSAGE,OPTIONS
Supported: ice,outbound
User-Agent: JsSIP 0.6.18
Content-Length: 871
v=0
o=Mozilla-SIPUA-35.0.1 18073 0 IN IP4 0.0.0.0
s=SIP Call
t=0 0
a=ice-ufrag:c2ab2cd2
a=ice-pwd:49ebd6ec4e8cd8dff4d90fbb1db04feb
a=fingerprint:sha-256 12:CE:48:7D:B4:2C:FB:03:C4:DF:F5:0E:7D:E7:02:DF:0A:5D:06:A8:99:41:82:D4:91:79:4F:7D:BC:53:3A:0F
m=audio 9 RTP/SAVPF 109 9 0 8 101
c=IN IP4 0.0.0.0
a=rtpmap:109 opus/48000/2
a=ptime:20
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=sendrecv
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=setup:actpass
a=rtcp-mux
a=candidate:0 1 UDP 2128609535 192.168.1.101 55983 typ host
a=candidate:0 2 UDP 2128609534 192.168.1.101 55984 typ host
a=candidate:1 1 UDP 1692467199 195.54.42.58 53117 typ srflx raddr 192.168.1.101 rport 55983
a=candidate:1 2 UDP 1692467198 195.54.42.58 60365 typ srflx raddr 192.168.1.101 rport 55984
" " +7ms" jssip-0.6.18.js:21376
"JsSIP:InviteClientTransaction " "Timer D expired for transaction z9hG4bK9913060" " +9ms" jssip-0.6.18.js:21376
"JsSIP:Transport " "received WebSocket text message:
SIP/2.0 100 Trying
Via: SIP/2.0/WS v3esbi87ujtn.invalid;branch=z9hG4bK1611429;received=195.54.42.58;rport=63980
From: <sip:97487336@52.11.173.157>;tag=i9oi2j4lsi
To: <sip:wrtc_24088503@52.11.173.157>
Call-ID: 13942n4ifccgdi8s0rr0
CSeq: 9522 INVITE
User-Agent: FreeSWITCH-mod_sofia/1.5.15b+git~20150304T190618Z~3a70750b42~64bit
Remote-Party-ID: "Outbound Call" <sip:ko6rfc61@52.11.173.157>;party=calling;privacy=off;screen=no
v=0
o=FreeSWITCH 1425563378 1425563379 IN IP4 52.11.173.157
s=FreeSWITCH
c=IN IP4 52.11.173.157
t=0 0
a=msid-semantic: WMS 3PGsZhhNXHqvPSeURXN5yj0IJyB878R0
m=audio 23534 RTP/SAVPF 109 101
a=rtpmap:109 opus/48000/2
a=fmtp:109 useinbandfec=1; usedtx=1; maxaveragebitrate=30000; maxplaybackrate=48000
a=rtpmap:101 telephone-event/8000
a=ptime:20
a=fingerprint:sha-256 83:B1:D9:44:9A:17:DE:13:36:24:E3:1F:D8:0E:A0:86:77:25:5B:53:80:13:C3:F0:96:E8:34:32:AC:EE:CE:16
a=rtcp-mux
a=rtcp:23534 IN IP4 52.11.173.157
a=ssrc:2768117494 cname:OojEwrhkYyFDgJoY
a=ssrc:2768117494 msid:3PGsZhhNXHqvPSeURXN5yj0IJyB878R0 a0
a=ssrc:2768117494 mslabel:3PGsZhhNXHqvPSeURXN5yj0IJyB878R0
a=ssrc:2768117494 label:3PGsZhhNXHqvPSeURXN5yj0IJyB878R0a0
a=ice-ufrag:w1TVaKtK8VJ5TrWy
a=ice-pwd:F621nabbyHFFhTtDLdpMNImL
a=candidate:4434570021 1 udp 659136 52.11.173.157 23534 typ host generation 0
" " +0ms" jssip-0.6.18.js:21376
"JsSIP:RTCSession " "receiveInviteResponse()" " +9ms" jssip-0.6.18.js:21376
"JsSIP:RTCSession " "sendRequest()" " +0ms" jssip-0.6.18.js:21376
"JsSIP:RTCSession:Request " "new | ACK" " +0ms" jssip-0.6.18.js:21376
"JsSIP:Transport " "sending WebSocket message:
ACK sip:wrtc_24088503@52.11.173.157:5060;transport=udp SIP/2.0
Via: SIP/2.0/WS v3esbi87ujtn.invalid;branch=z9hG4bK6630835
Max-Forwards: 69
To: <sip:wrtc_24088503@52.11.173.157>;tag=tU3FK63vjUK8B
From: <sip:97487336@52.11.173.157>;tag=i9oi2j4lsi
Call-ID: 13942n4ifccgdi8s0rr0
CSeq: 9522 ACK
Allow: INVITE,ACK,CANCEL,BYE,UPDATE,MESSAGE,OPTIONS
Supported: outbound
User-Agent: JsSIP 0.6.18
Content-Length: 0
" " +4ms" jssip-0.6.18.js:21376
POST http://q76.queuev4.vk.com/im503 [HTTP/1.1 200 OK 2197мс]
"Alex 1: 00:00:01" voip.js:382
"Alex 1: 00:00:02" voip.js:382
"Alex 1: 00:00:03" voip.js:382
POST http://q76.queuev4.vk.com/im503 [HTTP/1.1 200 OK 25053мс]
"Alex 1: 00:00:04" voip.js:382
"Alex 1: 00:00:05" voip.js:382
"Alex 1: 00:00:06" voip.js:382
"Alex 1: 00:00:07" voip.js:382
"Alex 1: 00:00:08" voip.js:382
"rtcninja:RTCPeerConnection " "setRemoteDescription() | success" " +9s" jssip-0.6.18.js:21376
"JsSIP:RTCSession " "session accepted" " +0ms" jssip-0.6.18.js:21376
"debug" "call accepted" Object { originator: "remote", response: Object } popup.js:376
"JsSIP:RTCSession " "sendRequest()" " +1ms" jssip-0.6.18.js:21376
"JsSIP:RTCSession:Request " "new | ACK" " +0ms" jssip-0.6.18.js:21376
"JsSIP:Transport " "sending WebSocket message:
ACK sip:wrtc_24088503@52.11.173.157:5060;transport=udp SIP/2.0
Via: SIP/2.0/WS v3esbi87ujtn.invalid;branch=z9hG4bK4020045
Max-Forwards: 69
To: <sip:wrtc_24088503@52.11.173.157>;tag=tU3FK63vjUK8B
From: <sip:97487336@52.11.173.157>;tag=i9oi2j4lsi
Call-ID: 13942n4ifccgdi8s0rr0
CSeq: 9522 ACK
Allow: INVITE,ACK,CANCEL,BYE,UPDATE,MESSAGE,OPTIONS
Supported: outbound
User-Agent: JsSIP 0.6.18
Content-Length: 0
" " +4ms" jssip-0.6.18.js:21376
"JsSIP:RTCSession " "session confirmed" " +0ms" jssip-0.6.18.js:21376
"debug" "call confirmed" Object { originator: "local", ack: null } popup.js:376
"message" "Speaking..." popup.js:382
"outgoingCall.speak" Arguments { 0: "outgoingCall.speak", 1: "Alex 2", ещё 2… } popup.js:25
"rtcninja:RTCPeerConnection " "onsignalingstatechange() | signalingState: stable" " +2ms" jssip-0.6.18.js:21376
"hangUp.before" Arguments { 0: "hangUp.before", 1: Object, ещё 2… } popup.js:25
"debug" "hang up" Object { ua: Object, status: 8, earlyDialogs: Object, connection: Object, is_confirmed: true, late_sdp: false, rtcOfferConstraints: null, rtcAnswerConstraints: null, localMediaStream: LocalMediaStream, localMediaStreamLocallyGenerated: true, ещё 23… } popup.js:376
"JsSIP:RTCSession " "terminate()" " +12s" jssip-0.6.18.js:21376
"JsSIP:RTCSession " "terminating session" " +1ms" jssip-0.6.18.js:21376
"JsSIP:RTCSession " "sendRequest()" " +0ms" jssip-0.6.18.js:21376
"JsSIP:RTCSession:Request " "new | BYE" " +0ms" jssip-0.6.18.js:21376
"JsSIP:Transport " "sending WebSocket message:
BYE sip:wrtc_24088503@52.11.173.157:5060;transport=udp SIP/2.0
Via: SIP/2.0/WS v3esbi87ujtn.invalid;branch=z9hG4bK8019990
Max-Forwards: 69
To: <sip:wrtc_24088503@52.11.173.157>;tag=tU3FK63vjUK8B
From: <sip:97487336@52.11.173.157>;tag=i9oi2j4lsi
Call-ID: 13942n4ifccgdi8s0rr0
CSeq: 9523 BYE
Allow: INVITE,ACK,CANCEL,BYE,UPDATE,MESSAGE,OPTIONS
Supported: outbound
User-Agent: JsSIP 0.6.18
Content-Length: 0
" " +7ms" jssip-0.6.18.js:21376
"JsSIP:RTCSession " "session ended" " +1ms" jssip-0.6.18.js:21376
"JsSIP:RTCSession " "close()" " +0ms" jssip-0.6.18.js:21376
"rtcninja:RTCPeerConnection " "close()" " +0ms" jssip-0.6.18.js:21376
"rtcninja:RTCPeerConnection " "oniceconnectionstatechange() | iceConnectionState: closed" " +0ms" jssip-0.6.18.js:21376
"JsSIP:RTCSession " "close() | closing local MediaStream" " +1ms" jssip-0.6.18.js:21376
"rtcninja:Adapter " "closeMediaStream() | calling stop() on all the MediaStreamTrack" " +1ms" jssip-0.6.18.js:21376
"JsSIP:Dialog " "dialog 13942n4ifccgdi8s0rr0i9oi2j4lsitU3FK63vjUK8B deleted" " +0ms" jssip-0.6.18.js:21376
"ENDED:" Arguments { 0: Object, ещё 2… } popup.js:738
"debug" "call ended" Object { originator: "local", message: null, cause: "Rejected" } popup.js:376
"message" "Call ended" popup.js:382
"outgoingCall.end" Arguments { 0: "outgoingCall.end", ещё 2… } popup.js:25
"Call ended, duration 00:00:11" popup.js:382
"hangUp" Arguments { 0: "hangUp", ещё 2… } popup.js:25
"rtcninja:RTCPeerConnection " "onsignalingstatechange() | signalingState: closed" " +22ms" jssip-0.6.18.js:21376
"popup.call.end" Arguments { 0: "popup.call.end", 1: Object, ещё 2… } voip.js:25
"api.call.end" Arguments { 0: "api.call.end", 1: "{"outCallId":"111","inCallId":"222","callerId":"11","clientId":"12"}", 2: VoIP</GUI_pv.prototype.apiCallEnd/<(), ещё 2… } voip.js:25
"API update history response" "send request to /call/updateHistory" voip.js:376
"JsSIP:Transport " "received WebSocket text message:
SIP/2.0 200 OK
Via: SIP/2.0/WS v3esbi87ujtn.invalid;branch=z9hG4bK8019990;received=195.54.42.58;rport=63980
From: <sip:97487336@52.11.173.157>;tag=i9oi2j4lsi
To: <sip:wrtc_24088503@52.11.173.157>;tag=tU3FK63vjUK8B
Call-ID: 13942n4ifccgdi8s0rr0
CSeq: 9523 BYE
User-Agent: FreeSWITCH-mod_sofia/1.5.15b+git~20150304T190618Z~3a70750b42~64bit
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY, PUBLISH, SUBSCRIBE
Supported: path, replaces
Content-Length: 0
" " +432ms" jssip-0.6.18.js:21376
"JsSIP:RTCSession:Request " "onSuccessResponse" " +11ms" jssip-0.6.18.js:21376
"JsSIP:InviteClientTransaction " "Timer B expired for transaction z9hG4bK1611429" " +21ms" jssip-0.6.18.js:21376
"ENDED:" Arguments { 0: Object, ещё 2… } voip.js:710
"debug" "call ended" Object { originator: "remote", message: Object, cause: "Terminated" } voip.js:376
"message" "Call ended" voip.js:382
"incomingCall.end" Arguments { 0: "incomingCall.end", ещё 2… } voip.js:25
"JsSIP:UA " "stop()" " +627ms" jssip-0.6.18.js:21376
"destroy" Arguments { 0: "destroy", 1: Object, ещё 2… } popup.js:25
GET http://cs7-3v4.vk-cdn.net/p13/be7e2d819d42f3.mp3 [HTTP/1.1 200 OK 2851мс]
POST http://q76.queuev4.vk.com/im503
POST http://vk.com/audio [HTTP/1.1 200 OK 1301мс]
问候Alex
mod_verto实现比WebRTC实现好得多。我建议根据经验走这条路。
https://freeswitch.org/confluence/display/FREESWITCH/mod_verto
我知道一个在当前浏览器上测试媒体资源的工具。您可以先使用它来确保媒体资源正常工作。
https://janus.conf.meetecho.com/echotest.html
来自https://freeswitch.org/confluence/display/FREESWITCH/mod_verto:
尽管Firefox是一个很好的web浏览器,但它不支持立体声WebRTC音频,因此立体声定位将丢失。
这是Firefox中的问题,因为他们在更新版本的Firefox中减少了对webrtc的支持。
尝试使用较低版本的Firefox(42)。