[asterisk-bugs] [JIRA] (ASTERISK-24979) Webrtc client audio output is consistently skipping or missing non-continuous audio

r mundkowsky (JIRA) noreply at issues.asterisk.org
Mon Apr 20 18:58:33 CDT 2015


     [ https://issues.asterisk.org/jira/browse/ASTERISK-24979?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

r mundkowsky updated ASTERISK-24979:
------------------------------------

    Description: 
Steps that Cause error:
	
webrtc client (WEBRTC_PUBLIC_IP using sipml5 or jssip via user 6002) makes audio call to extension 4000 on Asterisk (ASTRISK_PUBLIC_IP) via ws protocol directly or via webrtc2sip.  Asterisk answers, plays local audio file and dials SIP/4000 at JVXMLcloud1 peer (BROWSER_IP). SIP/4000 at JVXMLcloud1 peer then starts dialog with webrtc client. SIP/4000 at JVXMLcloud1 peer handles SIP traffic, but hands off RTP to sound server (SOUNDSRV_IP). webrtc client hangs up.

Expected behavior:

webrtc client has dialog with SIP/4000 at JVXMLcloud1 peer.  All audio sent from SIP/4000 at JVXMLcloud1 is heard by webrtc client.

Actual behavior:

webrtc client connects to Asterisk and hears Asterisk played audio file then hears some small parts of dialog that is expected from SIP/4000 at JVXMLcloud1 peer. webrtc client hangs-up before dialog is finished because no audio is heard after awhile.

Notes:

1) The audio logs on Asterisk though have the complete audio to/from SIP/4000 at JVXMLcloud1, nothing is missing.  
2) Output audio sent to webrtc client is discontinuous (RTP send “hello”, pause (no RTP), …).  
3) Normal SIP/RTP clients (such as Noiper, Peers, PSTN/SIP) work correctly hearing full dialog from SIP/4000 at JVXMLcloud1 peer.  
4) Output to the webrtc client is fine if the webrtc client is called from a SIP/RTP client (such as Noiper, Peers) via Asterisk server.	



sip.conf snippet:

[6002]
transport=ws
defaultuser=6002
host=dynamic
secret=AAAAAAA
type=friend
encryption=yes
avpf=yes
force_avp=yes
icesupport=yes
directmedia=no
hasiax=no
hassip=yes
disallow=all
allow=ulaw
allow=g729
allow=g723
allow=speex
allow=ilbc
allow=gsm
dtlsenable=yes
dtlsverify=fingerprint
dtlscertfile=/export/Apps/asterisk/lib/asterisk/keys/asterisk.pem
dtlscafile=/export/Apps/asterisk/lib/asterisk/keys/ca.crt
dtlssetup=actpass



[JVXMLcloud1]
type=peer
nat=no
qualify=no
host=BROWSER_IP
port=5090
dtmfmode=info
canreinvite=no

extensions.conf snippet:

[system]
exten => 4000,1,Answer()
exten => 4000,n,Playback(/export/Apps/asterisk13-3-2/var/lib/asterisk/sounds/en/custom/transferring_with_record_warning)
exten => 4000,n,NoOp(Caller ID: ${CALLERID(num)})
exten => 4000,n,NoOp(SIP Headers:: From: ${SIP_HEADER(From)}, To: ${SIP_HEADER(To)})
exten => 4000,n,NoOp(Unique ID: ${UNIQUEID}, Channel Name: ${CHANNEL}, SIP Call ID: ${SIPCALLID})
exten => 4000,n,NoOp(The current group count : ${GROUP_COUNT(outgoing)})
exten => 4000,n,GotoIf($[${GROUP_COUNT(outgoing)}>1]?ring)
exten => 4000,n,Set(GLOBAL(current_timestamp_4000)=${STRFTIME(${EPOCH},GMT+1,%s)})
exten => 4000,n,Set(GLOBAL(current_full_format_timestamp_4000)=${STRFTIME(${EPOCH},GMT-8,%d%m%Y_%H%M%S)})
exten => 4000,n,NoOp(The current timestamp : ${current_timestamp_4000})
exten => 4000,n,NoOp(The last timestamp : ${last_timestamp_4000})
exten => 4000,n,GotoIf($[(${last_timestamp_4000}+20>${current_timestamp_4000})]?ring)
exten => 4000,n,NoOp(All cases passed)
exten => 4000,n(ring),Ringing()
exten => 4000,n,Wait(2)
exten => 4000,n,Monitor(wav,SYSTEM_audio_ext_4000_${current_full_format_timestamp_4000})
exten => 4000,n,MixMonitor(SYSTEM_MixMonitor_audio_ext_4000_${current_full_format_timestamp_4000}.wav)
exten => 4000,n,NoOp(The full call corresponding to SIP Call ID: ${SIPCALLID} and Caller ID: ${CALLERID(num)} was recorded to the file: SYSTEM_MixMonitor_audio_ext_4000_${current_full_format_timestamp_4000}.wav)
exten => 4000,n,Dial(SIP/4000 at JVXMLcloud1,,XgF(default^4000^14))
exten => 4000,n,Set(GLOBAL(last_timestamp_4000)=${STRFTIME(${EPOCH},GMT+1,%s)})
exten => 4000,n,Hangup()
exten => 4000,n,Ringing()
exten => 4000,n,Wait(2)
exten => 4000,n,Playback(/export/Apps/asterisk/lib/asterisk/sounds/custom/busy_later)
exten => 4000,n,Wait(1)
exten => 4000,n,Hangup()

rtp.conf:

[general]
rtpstart=10000
rtpend=20000
                        ;(min 500, max 60000, default 5000)
icesupport=true
stunaddr=stun.l.google.com:19302


http.conf:

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


  was:When using webrtc client to call Asterisk directly or via webrtc2sip, audio output to the webrtc client is consistently missing audio. The audio logs on Asterisk though have the complete audio with nothing missing.  Note that Asterisk is connecting the client to 2 servers on the backend.  The first  server JXVML handles sip and hands RTP off to another server.  Also note that the output audio is discontinuous (RTP send “hello”, pause (no RTP), …).  Also note that normal SIP/RTP clients (such as Noiper, Peers) work correctly calling this same extension.  Also note that output to the webrtc client is fine if the webrtc client is called from a SIP/RTP client (such as Noiper, Peers).


> Webrtc client audio output is consistently skipping or missing non-continuous audio
> -----------------------------------------------------------------------------------
>
>                 Key: ASTERISK-24979
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-24979
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Channels/chan_sip/General, Resources/res_http_websocket
>    Affects Versions: 13.2.0, 13.3.2
>         Environment: Server: Ubuntu 14.04.1 LTS x86_64 
> web sockets server: Asterisk or webrtc2sip
> clients: sipml5 and jssip
>            Reporter: r mundkowsky
>            Assignee: r mundkowsky
>
> Steps that Cause error:
> 	
> webrtc client (WEBRTC_PUBLIC_IP using sipml5 or jssip via user 6002) makes audio call to extension 4000 on Asterisk (ASTRISK_PUBLIC_IP) via ws protocol directly or via webrtc2sip.  Asterisk answers, plays local audio file and dials SIP/4000 at JVXMLcloud1 peer (BROWSER_IP). SIP/4000 at JVXMLcloud1 peer then starts dialog with webrtc client. SIP/4000 at JVXMLcloud1 peer handles SIP traffic, but hands off RTP to sound server (SOUNDSRV_IP). webrtc client hangs up.
> Expected behavior:
> webrtc client has dialog with SIP/4000 at JVXMLcloud1 peer.  All audio sent from SIP/4000 at JVXMLcloud1 is heard by webrtc client.
> Actual behavior:
> webrtc client connects to Asterisk and hears Asterisk played audio file then hears some small parts of dialog that is expected from SIP/4000 at JVXMLcloud1 peer. webrtc client hangs-up before dialog is finished because no audio is heard after awhile.
> Notes:
> 1) The audio logs on Asterisk though have the complete audio to/from SIP/4000 at JVXMLcloud1, nothing is missing.  
> 2) Output audio sent to webrtc client is discontinuous (RTP send “hello”, pause (no RTP), …).  
> 3) Normal SIP/RTP clients (such as Noiper, Peers, PSTN/SIP) work correctly hearing full dialog from SIP/4000 at JVXMLcloud1 peer.  
> 4) Output to the webrtc client is fine if the webrtc client is called from a SIP/RTP client (such as Noiper, Peers) via Asterisk server.	
> sip.conf snippet:
> [6002]
> transport=ws
> defaultuser=6002
> host=dynamic
> secret=AAAAAAA
> type=friend
> encryption=yes
> avpf=yes
> force_avp=yes
> icesupport=yes
> directmedia=no
> hasiax=no
> hassip=yes
> disallow=all
> allow=ulaw
> allow=g729
> allow=g723
> allow=speex
> allow=ilbc
> allow=gsm
> dtlsenable=yes
> dtlsverify=fingerprint
> dtlscertfile=/export/Apps/asterisk/lib/asterisk/keys/asterisk.pem
> dtlscafile=/export/Apps/asterisk/lib/asterisk/keys/ca.crt
> dtlssetup=actpass
> [JVXMLcloud1]
> type=peer
> nat=no
> qualify=no
> host=BROWSER_IP
> port=5090
> dtmfmode=info
> canreinvite=no
> extensions.conf snippet:
> [system]
> exten => 4000,1,Answer()
> exten => 4000,n,Playback(/export/Apps/asterisk13-3-2/var/lib/asterisk/sounds/en/custom/transferring_with_record_warning)
> exten => 4000,n,NoOp(Caller ID: ${CALLERID(num)})
> exten => 4000,n,NoOp(SIP Headers:: From: ${SIP_HEADER(From)}, To: ${SIP_HEADER(To)})
> exten => 4000,n,NoOp(Unique ID: ${UNIQUEID}, Channel Name: ${CHANNEL}, SIP Call ID: ${SIPCALLID})
> exten => 4000,n,NoOp(The current group count : ${GROUP_COUNT(outgoing)})
> exten => 4000,n,GotoIf($[${GROUP_COUNT(outgoing)}>1]?ring)
> exten => 4000,n,Set(GLOBAL(current_timestamp_4000)=${STRFTIME(${EPOCH},GMT+1,%s)})
> exten => 4000,n,Set(GLOBAL(current_full_format_timestamp_4000)=${STRFTIME(${EPOCH},GMT-8,%d%m%Y_%H%M%S)})
> exten => 4000,n,NoOp(The current timestamp : ${current_timestamp_4000})
> exten => 4000,n,NoOp(The last timestamp : ${last_timestamp_4000})
> exten => 4000,n,GotoIf($[(${last_timestamp_4000}+20>${current_timestamp_4000})]?ring)
> exten => 4000,n,NoOp(All cases passed)
> exten => 4000,n(ring),Ringing()
> exten => 4000,n,Wait(2)
> exten => 4000,n,Monitor(wav,SYSTEM_audio_ext_4000_${current_full_format_timestamp_4000})
> exten => 4000,n,MixMonitor(SYSTEM_MixMonitor_audio_ext_4000_${current_full_format_timestamp_4000}.wav)
> exten => 4000,n,NoOp(The full call corresponding to SIP Call ID: ${SIPCALLID} and Caller ID: ${CALLERID(num)} was recorded to the file: SYSTEM_MixMonitor_audio_ext_4000_${current_full_format_timestamp_4000}.wav)
> exten => 4000,n,Dial(SIP/4000 at JVXMLcloud1,,XgF(default^4000^14))
> exten => 4000,n,Set(GLOBAL(last_timestamp_4000)=${STRFTIME(${EPOCH},GMT+1,%s)})
> exten => 4000,n,Hangup()
> exten => 4000,n,Ringing()
> exten => 4000,n,Wait(2)
> exten => 4000,n,Playback(/export/Apps/asterisk/lib/asterisk/sounds/custom/busy_later)
> exten => 4000,n,Wait(1)
> exten => 4000,n,Hangup()
> rtp.conf:
> [general]
> rtpstart=10000
> rtpend=20000
>                         ;(min 500, max 60000, default 5000)
> icesupport=true
> stunaddr=stun.l.google.com:19302
> http.conf:
> [general]
> enabled=yes
> bindaddr=0.0.0.0
> bindport=8088



--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list