meetecho / janus-gateway

Janus WebRTC Server
https://janus.conf.meetecho.com
GNU General Public License v3.0
8.15k stars 2.47k forks source link

[ERR] [ice.c:janus_ice_cb_component_state_changed:643:] ICE failed for handle 1716821054... #112

Closed dmerlitti closed 9 years ago

dmerlitti commented 9 years ago

I have installed Janus (configured without websockets, data-channel and rabbitmq, ) on a Ubuntu x64 14.04 LTS VM running on Azure (http://iudev.cloudapp.net/janus/). I have created only a new endpoint for the 8088 TCP port. The following is the Janus output from the startup time till the moment I got the error in the echo test demo app (http://iudev.cloudapp.net/janus/echotest.html):

---------------------------------------------------
Starting Meetecho Janus (WebRTC Gateway) v0.0.6
---------------------------------------------------

Reading configuration from /opt/janus/etc/janus/janus.cfg
Checking command line arguments...
Debug/log level is 4
Adding 'vmnet' to the ICE ignore list...
Using 10.0.0.4 as local IP...
Initializing ICE stuff (IPv6 candidates disabled)
Fingerprint of our certificate: C5:5F:DA:7D:84:47:B1:BF:6B:55:16:62:48:31:3E:D3:F1:7B:25:89:92:4A:4B:4D:4D:D9:D5:AF:EA:D8:15:44
Plugins folder: /opt/janus/lib/janus/plugins
Loading plugin 'libjanus_echotest.so'...
JANUS EchoTest plugin initialized!
Loading plugin 'libjanus_videoroom.so'...
[ERR] [config.c:janus_config_parse:72:]   -- Error reading configuration file... error 2 (No such file or directory)
JANUS VideoRoom plugin initialized!
Loading plugin 'libjanus_voicemail.so'...
[ERR] [config.c:janus_config_parse:72:]   -- Error reading configuration file... error 2 (No such file or directory)
JANUS VoiceMail plugin initialized!
Loading plugin 'libjanus_recordplay.so'...
JANUS Record&Play plugin initialized!
Loading plugin 'libjanus_sip.so'...
[ERR] [config.c:janus_config_parse:72:]   -- Error reading configuration file... error 2 (No such file or directory)
JANUS SIP plugin initialized!
Loading plugin 'libjanus_videocall.so'...
JANUS VideoCall plugin initialized!
Loading plugin 'libjanus_audiobridge.so'...
[ERR] [config.c:janus_config_parse:72:]   -- Error reading configuration file... error 2 (No such file or directory)
JANUS AudioBridge plugin initialized!
Loading plugin 'libjanus_streaming.so'...
Echotest watchdog started
Record&Play watchdog started
VideoRoom watchdog started
SIP watchdog started
VideoCall watchdog started
VoiceMail watchdog started
JANUS Streaming plugin initialized!
HTTP webserver started (port 8088, /janus path listener)...
[WARN] HTTPS webserver disabled
[WARN] WebSockets support not compiled
[WARN] RabbitMQ support not compiled
[WARN] Admin/monitor HTTP webserver disabled
[WARN] Admin/monitor HTTPS webserver disabled
AudioBridge watchdog started
Streaming watchdog started
Sessions watchdog started
Creating new session: 1666044823
Creating new handle in session 1666044823: 2820090189
[2820090189] There's a message for JANUS EchoTest plugin
[2820090189] There's a message for JANUS EchoTest plugin
[2820090189] Creating ICE agent (controlled mode)
[2820090189] ICE send thread started...
[2820090189] Done! Ready to setup remote candidates and send connectivity checks...
ICE started and trickling, sending connectivity checks for candidates retrieved so far...
No more remote candidates for handle 2820090189!
Creating new session: 1942371579
Creating new handle in session 1942371579: 954972076
[954972076] There's a message for JANUS EchoTest plugin
[954972076] There's a message for JANUS EchoTest plugin
[954972076] Creating ICE agent (controlled mode)
[954972076] ICE send thread started...
[954972076] Done! Ready to setup remote candidates and send connectivity checks...
ICE started and trickling, sending connectivity checks for candidates retrieved so far...
[WARN] [954972076]    Unsupported transport tcp!
[WARN] [954972076]    Unsupported transport tcp!
No more remote candidates for handle 954972076!
Detaching handle from JANUS EchoTest plugin
Handle detached (0), scheduling destruction
[2820090189] ICE send thread leaving...
Destroying session 1666044823
[2820090189] WebRTC resources freed
[2820090189] Handle and related resources freed
Detaching handle from JANUS EchoTest plugin
Handle detached (0), scheduling destruction
[954972076] ICE send thread leaving...
Destroying session 1942371579
[954972076] WebRTC resources freed
[954972076] Handle and related resources freed
Creating new session: 1239651098
Creating new handle in session 1239651098: 1716821054
[1716821054] There's a message for JANUS EchoTest plugin
[1716821054] There's a message for JANUS EchoTest plugin
[1716821054] Creating ICE agent (controlled mode)
[1716821054] ICE send thread started...
[1716821054] Done! Ready to setup remote candidates and send connectivity checks...
ICE started and trickling, sending connectivity checks for candidates retrieved so far...
[WARN] [1716821054]    Unsupported transport tcp!
[WARN] [1716821054]    Unsupported transport tcp!
No more remote candidates for handle 1716821054!
[ERR] [ice.c:janus_ice_cb_component_state_changed:643:] ICE failed for handle 1716821054...
No WebRTC media anymore
[1716821054] ICE send thread leaving...
lminiero commented 9 years ago

Apart from the fact that you forgot to do a make configs (all the plugins are complaining about a missing configuration file) my guess is that you need to open the ports for ICE/DTLS/SRTP. 8088 is just the port to do signalling with Janus via HTTP, the other ports for the media are dynamic. If you don't want to open them all, you can configure an RTP range in the settings and open those.

dmerlitti commented 9 years ago

I have configured Janus with rtp_port_range:

[media]
rtp_port_range = 20001-20005

but after restarting, it's using ports out of this range:

davide@iudev:~/janus-gateway$ sudo netstat -tulpn | grep janus
tcp        0      0 0.0.0.0:8088            0.0.0.0:*               LISTEN      41045/janus
udp        0      0 0.0.0.0:58853           0.0.0.0:*                           41045/janus
udp        0      0 0.0.0.0:5002            0.0.0.0:*                           41045/janus
udp        0      0 0.0.0.0:5004            0.0.0.0:*                           41045/janus
udp6       0      0 :::34133                :::*                                41045/janus
lminiero commented 9 years ago

8088 is HTTP, 5002 and 5004 are used by the streaming plugin demo statically, so not unexpected there.

For what concerns 58853, if that was generated by Janus in response to a negotiation attempt, the version of libnice needs to support the range, and not all do. If when starting the nice_agent_set_port_range unavailable, port range disabled message appears on the console, the version of libnice is too old and that feature is disabled, meaning the ports are chosen randomly instead.

As a PS: 20001-20005 is a very small range if you intend to negotiate several sessions.

dmerlitti commented 9 years ago

Now I have changed also the public_ip in the [nat] section of the config file: (the VM has a private IP 10.0.0.4 and a public IP 104.40.190.32)

[nat]
public_ip = 104.40.190.32

This is the console output:

---------------------------------------------------
  Starting Meetecho Janus (WebRTC Gateway) v0.0.6
---------------------------------------------------
Reading configuration from /opt/janus/etc/janus/janus.cfg
Checking command line arguments...
Debug/log level is 4
Adding 'vmnet' to the ICE ignore list...
Using 10.0.0.4 as local IP...
RTP port range: 20001 -- 20005
Initializing ICE stuff (IPv6 candidates disabled)
Using 104.40.190.32 as our public IP in SDP
Fingerprint of our certificate: C5:5F:DA:7D:84:47:B1:BF:6B:55:16:62:48:31:3E:D3:F1:7B:25:89:92:4A:4B:4D:4D:D9:D5:AF:EA:D8:15:44
Plugins folder: /opt/janus/lib/janus/plugins
Loading plugin 'libjanus_echotest.so'...
JANUS EchoTest plugin initialized!
Loading plugin 'libjanus_videoroom.so'...
JANUS VideoRoom plugin initialized!
Loading plugin 'libjanus_voicemail.so'...
JANUS VoiceMail plugin initialized!
Loading plugin 'libjanus_recordplay.so'...
JANUS Record&Play plugin initialized!
Loading plugin 'libjanus_sip.so'...
JANUS SIP plugin initialized!
Loading plugin 'libjanus_videocall.so'...
Echotest watchdog started
VoiceMail watchdog started
Record&Play watchdog started
SIP watchdog started
VideoRoom watchdog started
JANUS VideoCall plugin initialized!
Loading plugin 'libjanus_audiobridge.so'...
JANUS AudioBridge plugin initialized!
Loading plugin 'libjanus_streaming.so'...
JANUS Streaming plugin initialized!
HTTP webserver started (port 8088, /janus path listener)...
[WARN] HTTPS webserver disabled
[WARN] WebSockets support not compiled
[WARN] RabbitMQ support not compiled
[WARN] Admin/monitor HTTP webserver disabled
[WARN] Admin/monitor HTTPS webserver disabled
VideoCall watchdog started
AudioBridge watchdog started
Streaming watchdog started
Sessions watchdog started
Creating new session: 2353378857
Creating new handle in session 2353378857: 1973694785
[1973694785] There's a message for JANUS EchoTest plugin
[1973694785] There's a message for JANUS EchoTest plugin
[1973694785] Creating ICE agent (controlled mode)
[1973694785] ICE send thread started...
[1973694785] Done! Ready to setup remote candidates and send connectivity checks...
ICE started and trickling, sending connectivity checks for candidates retrieved so far...
[WARN] [1973694785]    Unsupported transport tcp!
[WARN] [1973694785]    Unsupported transport tcp!
No more remote candidates for handle 1973694785!
dmerlitti commented 9 years ago

and this is the console output with debug_level = 7:

---------------------------------------------------
  Starting Meetecho Janus (WebRTC Gateway) v0.0.6
---------------------------------------------------
Reading configuration from /opt/janus/etc/janus/janus.cfg
Checking command line arguments...
[janus.cfg]
    [general]
        configs_folder: /opt/janus/etc/janus
        plugins_folder: /opt/janus/lib/janus/plugins
        debug_level: 7
    [webserver]
        base_path: /janus
        threads: unlimited
        http: yes
        port: 8088
        https: no
        ws: yes
        ws_port: 8188
        ws_ssl: no
    [rabbitmq]
        enable: no
        host: localhost
        to_janus: to-janus
        from_janus: from-janus
    [admin]
        admin_base_path: /admin
        admin_threads: unlimited
        admin_http: no
        admin_port: 7088
        admin_https: no
        admin_secret: janusoverlord
    [certificates]
        cert_pem: /opt/janus/share/janus/certs/mycert.pem
        cert_key: /opt/janus/share/janus/certs/mycert.key
    [media]
        rtp_port_range: 20001-20005
    [nat]
        public_ip: 104.40.190.32
        ice_ignore_list: vmnet
Debug/log level is 7
Adding 'vmnet' to the ICE ignore list...
Available interfaces:
        lo:     127.0.0.1
        eth0:   10.0.0.4
Using 10.0.0.4 as local IP...
RTP port range: 20001 -- 20005
Initializing ICE stuff (IPv6 candidates disabled)
Using 104.40.190.32 as our public IP in SDP
Using certificates:
        /opt/janus/share/janus/certs/mycert.pem
        /opt/janus/share/janus/certs/mycert.key
Fingerprint of our certificate: C5:5F:DA:7D:84:47:B1:BF:6B:55:16:62:48:31:3E:D3:F1:7B:25:89:92:4A:4B:4D:4D:D9:D5:AF:EA:D8:15:44
Plugins folder: /opt/janus/lib/janus/plugins
Loading plugin 'libjanus_echotest.so'...
JANUS EchoTest plugin created!
Configuration file: /opt/janus/etc/janus/janus.plugin.echotest.cfg
[janus.plugin.echotest.cfg]
JANUS EchoTest plugin initialized!
        Version: 4 (0.0.4)
           [janus.plugin.echotest] JANUS EchoTest plugin
           This is a trivial EchoTest plugin for Janus, just used to showcase the plugin interface.
Loading plugin 'libjanus_videoroom.so'...
JANUS VideoRoom plugin created!
Configuration file: /opt/janus/etc/janus/janus.plugin.videoroom.cfg
[janus.plugin.videoroom.cfg]
    [1234]
        description: Demo Room
        secret: adminpwd
        publishers: 6
        bitrate: 128000
        fir_freq: 10
        record: false
Adding video room '1234'
Created videoroom: 1234 (Demo Room, public, secret: adminpwd)
  ::: [1234][Demo Room] 128000, max 6 publishers, FIR frequency of 10 seconds
JANUS VideoRoom plugin initialized!
        Version: 4 (0.0.4)
           [janus.plugin.videoroom] JANUS VideoRoom plugin
           This is a plugin implementing a videoconferencing MCU for Janus, something like Licode.
Loading plugin 'libjanus_voicemail.so'...
Echotest watchdog started
Joining thread
VideoRoom watchdog started
Joining thread
JANUS VoiceMail plugin created!
Configuration file: /opt/janus/etc/janus/janus.plugin.voicemail.cfg
[janus.plugin.voicemail.cfg]
    [general]
        path: /tmp/voicemail/
        base: /voicemail/
Recordings path: /tmp/voicemail/
Recordings base: /voicemail/
JANUS VoiceMail plugin initialized!
        Version: 4 (0.0.4)
           [janus.plugin.voicemail] JANUS VoiceMail plugin
           This is a plugin implementing a very simple VoiceMail service for Janus, recording Opus streams.
Loading plugin 'libjanus_recordplay.so'...
JANUS Record&Play plugin created!
Configuration file: /opt/janus/etc/janus/janus.plugin.recordplay.cfg
[janus.plugin.recordplay.cfg]
    [general]
        path: /opt/janus/share/janus/recordings
Updating recordings list in /opt/janus/share/janus/recordings
Importing recording '436700720.nfo'...
Importing recording '1234.nfo'...
JANUS Record&Play plugin initialized!
        Version: 1 (0.0.1)
           [janus.plugin.recordplay] JANUS Record&Play plugin
           This is a trivial Record&Play plugin for Janus, to record WebRTC sessions and replay them.
Loading plugin 'libjanus_sip.so'...
JANUS SIP plugin created!
Configuration file: /opt/janus/etc/janus/janus.plugin.sip.cfg
[janus.plugin.sip.cfg]
    [general]
        autodetect_ignore: vmnet
Adding 'vmnet' to the c-line ignore list...
Autodetecting through available interfaces...
Going to use 10.0.0.4 as a c-line in the SDPs
JANUS SIP plugin initialized!
        Version: 3 (0.0.3)
           [janus.plugin.sip] JANUS SIP plugin
           This is a simple SIP plugin for Janus, allowing WebRTC peers to register at a SIP server and call SIP user agents through the gateway.
Loading plugin 'libjanus_videocall.so'...
JANUS VideoCall plugin created!
Configuration file: /opt/janus/etc/janus/janus.plugin.videocall.cfg
[janus.plugin.videocall.cfg]
JANUS VideoCall plugin initialized!
        Version: 3 (0.0.3)
           [janus.plugin.videocall] JANUS VideoCall plugin
           This is a simple video call plugin for Janus, allowing two WebRTC peers to call each other through the gateway.
Loading plugin 'libjanus_audiobridge.so'...
Joining thread
Record&Play watchdog started
SIP watchdog started
VideoCall watchdog started
Joining thread
VoiceMail watchdog started
Joining thread
JANUS AudioBridge plugin created!
Configuration file: /opt/janus/etc/janus/janus.plugin.audiobridge.cfg
[janus.plugin.audiobridge.cfg]
    [1234]
        description: Demo Room
        secret: adminpwd
        sampling_rate: 16000
        record: false
Adding audio room '1234'
Created audiobridge: 1234 (Demo Room, public, secret: adminpwd)
  ::: [1234][Demo Room] 16000 (will NOT be recorded)
JANUS AudioBridge plugin initialized!
        Version: 5 (0.0.5)
           [janus.plugin.audiobridge] JANUS AudioBridge plugin
           This is a plugin implementing an audio conference bridge for Janus, mixing Opus streams.
Loading plugin 'libjanus_streaming.so'...
JANUS Streaming plugin created!
Configuration file: /opt/janus/etc/janus/janus.plugin.streaming.cfg
[janus.plugin.streaming.cfg]
    [gstreamer-sample]
        type: rtp
        id: 1
        description: Opus/VP8 live stream coming from gstreamer
        audio: yes
        video: yes
        audioport: 5002
        audiopt: 111
        audiortpmap: opus/48000/2
        videoport: 5004
        videopt: 100
        videortpmap: VP8/90000
        secret: adminpwd
    [file-live-sample]
        type: live
        id: 2
        description: a-law file source (radio broadcast)
        filename: /opt/janus/share/janus/streams/radio.alaw
        audio: yes
        video: no
        secret: adminpwd
    [file-ondemand-sample]
        type: ondemand
        id: 3
        description: mu-law file source (music)
        filename: /opt/janus/share/janus/streams/music.mulaw
        audio: yes
        video: no
        secret: adminpwd
Adding stream 'gstreamer-sample'
Audio enabled, Video enabled
Audio enabled, Video enabled
Adding stream 'file-live-sample'
Adding stream 'file-ondemand-sample'
  ::: [1][gstreamer-sample] Opus/VP8 live stream coming from gstreamer (live, RTP source, public)
  ::: [2][file-live-sample] a-law file source (radio broadcast) (live, file source, public)
  ::: [3][file-ondemand-sample] mu-law file source (music) (on demand, file source, public)
JANUS Streaming plugin initialized!
        Version: 3 (0.0.3)
           [janus.plugin.streaming] JANUS Streaming plugin
           This is a streaming plugin for Janus, allowing WebRTC peers to watch/listen to pre-recorded files or media generated by gstreamer.
Using a thread per connection for the HTTP webserver
HTTP webserver started (port 8088, /janus path listener)...
[WARN] HTTPS webserver disabled
[WARN] WebSockets support not compiled
[WARN] RabbitMQ support not compiled
[WARN] Admin/monitor HTTP webserver disabled
[WARN] Admin/monitor HTTPS webserver disabled
Joining thread
Sessions watchdog started
Streaming watchdog started
Joining thread
Filesource RTP thread starting...
Opening file source /opt/janus/share/janus/streams/radio.alaw...
Streaming audio file: /opt/janus/share/janus/streams/radio.alaw
Starting relay thread
[gstreamer-sample] Audio listener bound to port 5002
[gstreamer-sample] Video listener bound to port 5004
Joining thread
AudioBridge watchdog started
Audio bridge thread starting...
Thread is for mixing room 1234 (Demo Room)...
dmerlitti commented 9 years ago

and after starting the echo test demo:

New connection on REST API: 79.31.47.218
New connection on REST API: 79.31.47.218
New connection on REST API: 79.31.47.218
New connection on REST API: 79.31.47.218
New connection on REST API: 79.31.47.218
New connection on REST API: 79.31.47.218
Got a HTTP OPTIONS request on /janus...
 ... Just parsing headers for now...
Host: iudev.cloudapp.net:8088
Connection: keep-alive
Access-Control-Request-Method: POST
Origin: http://iudev.cloudapp.net
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36
Access-Control-Request-Headers: accept, content-type
Accept: */*
Referer: http://iudev.cloudapp.net/janus/echotest.html
Accept-Encoding: gzip, deflate, sdch
Accept-Language: it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4,fr;q=0.2
Request completed, freeing data
Got a HTTP POST request on /janus...
 ... Just parsing headers for now...
Host: iudev.cloudapp.net:8088
Connection: keep-alive
Content-Length: 47
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://iudev.cloudapp.net
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36
Content-Type: application/json
Referer: http://iudev.cloudapp.net/janus/echotest.html
Accept-Encoding: gzip, deflate
Accept-Language: it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4,fr;q=0.2
Got a HTTP POST request on /janus...
 ... parsing request...
Processing POST data (application/json)...
  -- Uploaded data (47 bytes)
  -- Data we have now (47 bytes)
Got a HTTP POST request on /janus...
 ... parsing request...
Processing POST data (application/json)...
Done getting payload, we can answer
{"janus":"create","transaction":"zBkuHRLWgnGt"}
Creating new session: 2251804388
Request completed, freeing data
Got a HTTP GET request on /janus/2251804388...
 ... Just parsing headers for now...
Host: iudev.cloudapp.net:8088
Connection: keep-alive
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://iudev.cloudapp.net
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36
Referer: http://iudev.cloudapp.net/janus/echotest.html
Accept-Encoding: gzip, deflate, sdch
Accept-Language: it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4,fr;q=0.2
Got a HTTP GET request on /janus/2251804388...
 ... parsing request...
Session: 2251804388
Session 2251804388 found... returning up to 1 messages
... handling long poll...
New connection on REST API: 79.31.47.218
Got a HTTP OPTIONS request on /janus/2251804388...
 ... Just parsing headers for now...
Host: iudev.cloudapp.net:8088
Connection: keep-alive
Access-Control-Request-Method: POST
Origin: http://iudev.cloudapp.net
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36
Access-Control-Request-Headers: accept, content-type
Accept: */*
Referer: http://iudev.cloudapp.net/janus/echotest.html
Accept-Encoding: gzip, deflate, sdch
Accept-Language: it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4,fr;q=0.2
Request completed, freeing data
Got a HTTP POST request on /janus/2251804388...
 ... Just parsing headers for now...
Host: iudev.cloudapp.net:8088
Connection: keep-alive
Content-Length: 80
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://iudev.cloudapp.net
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36
Content-Type: application/json
Referer: http://iudev.cloudapp.net/janus/echotest.html
Accept-Encoding: gzip, deflate
Accept-Language: it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4,fr;q=0.2
Got a HTTP POST request on /janus/2251804388...
 ... parsing request...
Session: 2251804388
Processing POST data (application/json)...
  -- Uploaded data (80 bytes)
  -- Data we have now (80 bytes)
Got a HTTP POST request on /janus/2251804388...
 ... parsing request...
Session: 2251804388
Processing POST data (application/json)...
Done getting payload, we can answer
{"janus":"attach","plugin":"janus.plugin.echotest","transaction":"BsVtoBq7QeCa"}
Creating new handle in session 2251804388: 2499733559
Request completed, freeing data
Got a HTTP OPTIONS request on /janus/2251804388/2499733559...
 ... Just parsing headers for now...
Host: iudev.cloudapp.net:8088
Connection: keep-alive
Access-Control-Request-Method: POST
Origin: http://iudev.cloudapp.net
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36
Access-Control-Request-Headers: accept, content-type
Accept: */*
Referer: http://iudev.cloudapp.net/janus/echotest.html
Accept-Encoding: gzip, deflate, sdch
Accept-Language: it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4,fr;q=0.2
Request completed, freeing data
Got a HTTP POST request on /janus/2251804388/2499733559...
 ... Just parsing headers for now...
Host: iudev.cloudapp.net:8088
Connection: keep-alive
Content-Length: 83
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://iudev.cloudapp.net
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36
Content-Type: application/json
Referer: http://iudev.cloudapp.net/janus/echotest.html
Accept-Encoding: gzip, deflate
Accept-Language: it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4,fr;q=0.2
Got a HTTP POST request on /janus/2251804388/2499733559...
 ... parsing request...
Session: 2251804388
Handle: 2499733559
Processing POST data (application/json)...
  -- Uploaded data (83 bytes)
  -- Data we have now (83 bytes)
Got a HTTP POST request on /janus/2251804388/2499733559...
 ... parsing request...
Session: 2251804388
Handle: 2499733559
Processing POST data (application/json)...
Done getting payload, we can answer
{"janus":"message","body":{"audio":true,"video":true},"transaction":"sJ6hZFMCv02Y"}
[2499733559] There's a message for JANUS EchoTest plugin
{
   "audio": true,
   "video": true
}
Creating plugin result...
Destroying plugin result...
Request completed, freeing data
Handling message: {
   "audio": true,
   "video": true
}
Setting audio property: true
Setting video property: true
Pushing event: {
   "echotest": "event",
   "result": "ok"
}
[2499733559] Adding event to queue of messages...
  >> 0 (Success)
We have a message to serve...
        {
   "janus": "event",
   "session_id": 2251804388,
   "sender": 2499733559,
   "transaction": "sJ6hZFMCv02Y",
   "plugindata": {
      "plugin": "janus.plugin.echotest",
      "data": {
         "echotest": "event",
         "result": "ok"
      }
   }
}
Request completed, freeing data
Got a HTTP GET request on /janus/2251804388...
 ... Just parsing headers for now...
Host: iudev.cloudapp.net:8088
Connection: keep-alive
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://iudev.cloudapp.net
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36
Referer: http://iudev.cloudapp.net/janus/echotest.html
Accept-Encoding: gzip, deflate, sdch
Accept-Language: it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4,fr;q=0.2
Got a HTTP GET request on /janus/2251804388...
 ... parsing request...
Session: 2251804388
Session 2251804388 found... returning up to 1 messages
... handling long poll...
Got a HTTP POST request on /janus/2251804388/2499733559...
 ... Just parsing headers for now...
Host: iudev.cloudapp.net:8088
Connection: keep-alive
Content-Length: 2999
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://iudev.cloudapp.net
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36
Content-Type: application/json
Referer: http://iudev.cloudapp.net/janus/echotest.html
Accept-Encoding: gzip, deflate
Accept-Language: it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4,fr;q=0.2
Got a HTTP POST request on /janus/2251804388/2499733559...
 ... parsing request...
Session: 2251804388
Handle: 2499733559
Processing POST data (application/json)...
  -- Uploaded data (1440 bytes)
  -- Data we have now (1440 bytes)
Got a HTTP POST request on /janus/2251804388/2499733559...
 ... parsing request...
Session: 2251804388
Handle: 2499733559
Processing POST data (application/json)...
  -- Uploaded data (1440 bytes)
  -- Data we have now (2880 bytes)
Got a HTTP POST request on /janus/2251804388/2499733559...
 ... parsing request...
Session: 2251804388
Handle: 2499733559
Processing POST data (application/json)...
  -- Uploaded data (119 bytes)
  -- Data we have now (2999 bytes)
Got a HTTP POST request on /janus/2251804388/2499733559...
 ... parsing request...
Session: 2251804388
Handle: 2499733559
Processing POST data (application/json)...
Done getting payload, we can answer
{"janus":"message","body":{"audio":true,"video":true},"transaction":"3BbxPIRBZIio","jsep":{"sdp":"v=0\r\no=- 724526827003804521 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE audio video data\r\na=msid-semantic: WMS UjgEKSCLx4pkYaqSbcngRqAcDTlp8r6XOvlf\r\nm=audio 1 RTP/SAVPF 111 103 104 0 8 106 105 13 126\r\nc=IN IP4 0.0.0.0\r\na=rtcp:1 IN IP4 0.0.0.0\r\na=ice-ufrag:GRFeDTZ1xR3y+rQg\r\na=ice-pwd:f6YK5YK4NaqKJqz7Liijuq/H\r\na=ice-options:google-ice\r\na=fingerprint:sha-256 BD:51:AF:68:92:C0:2A:07:32:2D:EB:4B:64:70:FF:22:00:50:DB:A0:CE:B1:5F:85:A2:85:B6:33:EA:7C:7F:79\r\na=setup:actpass\r\na=mid:audio\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=sendrecv\r\na=rtcp-mux\r\na=rtpmap:111 opus/48000/2\r\na=fmtp:111 minptime=10\r\na=rtpmap:103 ISAC/16000\r\na=rtpmap:104 ISAC/32000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:106 CN/32000\r\na=rtpmap:105 CN/16000\r\na=rtpmap:13 CN/8000\r\na=rtpmap:126 telephone-event/8000\r\na=maxptime:60\r\na=ssrc:2438394017 cname:De2XYcitabUj9UJ7\r\na=ssrc:2438394017 msid:UjgEKSCLx4pkYaqSbcngRqAcDTlp8r6XOvlf c48126b5-0a25-4779-bb5d-75ed84928a72\r\na=ssrc:2438394017 mslabel:UjgEKSCLx4pkYaqSbcngRqAcDTlp8r6XOvlf\r\na=ssrc:2438394017 label:c48126b5-0a25-4779-bb5d-75ed84928a72\r\nm=video 1 RTP/SAVPF 100 116 117 96\r\nc=IN IP4 0.0.0.0\r\na=rtcp:1 IN IP4 0.0.0.0\r\na=ice-ufrag:GRFeDTZ1xR3y+rQg\r\na=ice-pwd:f6YK5YK4NaqKJqz7Liijuq/H\r\na=ice-options:google-ice\r\na=fingerprint:sha-256 BD:51:AF:68:92:C0:2A:07:32:2D:EB:4B:64:70:FF:22:00:50:DB:A0:CE:B1:5F:85:A2:85:B6:33:EA:7C:7F:79\r\na=setup:actpass\r\na=mid:video\r\na=extmap:2 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=sendrecv\r\na=rtcp-mux\r\na=rtpmap:100 VP8/90000\r\na=rtcp-fb:100 ccm fir\r\na=rtcp-fb:100 nack\r\na=rtcp-fb:100 nack pli\r\na=rtcp-fb:100 goog-remb\r\na=rtpmap:116 red/90000\r\na=rtpmap:117 ulpfec/90000\r\na=rtpmap:96 rtx/90000\r\na=fmtp:96 apt=100\r\na=ssrc-group:FID 2260080456 820862578\r\na=ssrc:2260080456 cname:De2XYcitabUj9UJ7\r\na=ssrc:2260080456 msid:UjgEKSCLx4pkYaqSbcngRqAcDTlp8r6XOvlf f5764d7d-8b87-47ea-bbb0-b00b8133ba53\r\na=ssrc:2260080456 mslabel:UjgEKSCLx4pkYaqSbcngRqAcDTlp8r6XOvlf\r\na=ssrc:2260080456 label:f5764d7d-8b87-47ea-bbb0-b00b8133ba53\r\na=ssrc:820862578 cname:De2XYcitabUj9UJ7\r\na=ssrc:820862578 msid:UjgEKSCLx4pkYaqSbcngRqAcDTlp8r6XOvlf f5764d7d-8b87-47ea-bbb0-b00b8133ba53\r\na=ssrc:820862578 mslabel:UjgEKSCLx4pkYaqSbcngRqAcDTlp8r6XOvlf\r\na=ssrc:820862578 label:f5764d7d-8b87-47ea-bbb0-b00b8133ba53\r\nm=application 1 DTLS/SCTP 5000\r\nc=IN IP4 0.0.0.0\r\na=ice-ufrag:GRFeDTZ1xR3y+rQg\r\na=ice-pwd:f6YK5YK4NaqKJqz7Liijuq/H\r\na=ice-options:google-ice\r\na=fingerprint:sha-256 BD:51:AF:68:92:C0:2A:07:32:2D:EB:4B:64:70:FF:22:00:50:DB:A0:CE:B1:5F:85:A2:85:B6:33:EA:7C:7F:79\r\na=setup:actpass\r\na=mid:data\r\na=sctpmap:5000 webrtc-datachannel 1024\r\n","type":"offer"}}
[2499733559] There's a message for JANUS EchoTest plugin
[2499733559] Remote SDP:
v=0
o=- 724526827003804521 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio video data
a=msid-semantic: WMS UjgEKSCLx4pkYaqSbcngRqAcDTlp8r6XOvlf
m=audio 1 RTP/SAVPF 111 103 104 0 8 106 105 13 126
c=IN IP4 0.0.0.0
a=rtcp:1 IN IP4 0.0.0.0
a=ice-ufrag:GRFeDTZ1xR3y+rQg
a=ice-pwd:f6YK5YK4NaqKJqz7Liijuq/H
a=ice-options:google-ice
a=fingerprint:sha-256 BD:51:AF:68:92:C0:2A:07:32:2D:EB:4B:64:70:FF:22:00:50:DB:A0:CE:B1:5F:85:A2:85:B6:33:EA:7C:7F:79
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: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:2438394017 cname:De2XYcitabUj9UJ7
a=ssrc:2438394017 msid:UjgEKSCLx4pkYaqSbcngRqAcDTlp8r6XOvlf c48126b5-0a25-4779-bb5d-75ed84928a72
a=ssrc:2438394017 mslabel:UjgEKSCLx4pkYaqSbcngRqAcDTlp8r6XOvlf
a=ssrc:2438394017 label:c48126b5-0a25-4779-bb5d-75ed84928a72
m=video 1 RTP/SAVPF 100 116 117 96
c=IN IP4 0.0.0.0
a=rtcp:1 IN IP4 0.0.0.0
a=ice-ufrag:GRFeDTZ1xR3y+rQg
a=ice-pwd:f6YK5YK4NaqKJqz7Liijuq/H
a=ice-options:google-ice
a=fingerprint:sha-256 BD:51:AF:68:92:C0:2A:07:32:2D:EB:4B:64:70:FF:22:00:50:DB:A0:CE:B1:5F:85:A2:85:B6:33:EA:7C:7F:79
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=sendrecv
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
a=ssrc-group:FID 2260080456 820862578
a=ssrc:2260080456 cname:De2XYcitabUj9UJ7
a=ssrc:2260080456 msid:UjgEKSCLx4pkYaqSbcngRqAcDTlp8r6XOvlf f5764d7d-8b87-47ea-bbb0-b00b8133ba53
a=ssrc:2260080456 mslabel:UjgEKSCLx4pkYaqSbcngRqAcDTlp8r6XOvlf
a=ssrc:2260080456 label:f5764d7d-8b87-47ea-bbb0-b00b8133ba53
a=ssrc:820862578 cname:De2XYcitabUj9UJ7
a=ssrc:820862578 msid:UjgEKSCLx4pkYaqSbcngRqAcDTlp8r6XOvlf f5764d7d-8b87-47ea-bbb0-b00b8133ba53
a=ssrc:820862578 mslabel:UjgEKSCLx4pkYaqSbcngRqAcDTlp8r6XOvlf
a=ssrc:820862578 label:f5764d7d-8b87-47ea-bbb0-b00b8133ba53
m=application 1 DTLS/SCTP 5000
c=IN IP4 0.0.0.0
a=ice-ufrag:GRFeDTZ1xR3y+rQg
a=ice-pwd:f6YK5YK4NaqKJqz7Liijuq/H
a=ice-options:google-ice
a=fingerprint:sha-256 BD:51:AF:68:92:C0:2A:07:32:2D:EB:4B:64:70:FF:22:00:50:DB:A0:CE:B1:5F:85:A2:85:B6:33:EA:7C:7F:79
a=setup:actpass
a=mid:data
a=sctpmap:5000 webrtc-datachannel 1024
[2499733559] Audio has been negotiated
[2499733559] Video has been negotiated
[2499733559] SCTP/DataChannels have been negotiated
[2499733559] The browser supports BUNDLE
[2499733559] The browser supports rtcp-mux
[2499733559] The browser is doing Trickle ICE
[2499733559] Setting ICE locally: got OFFER (1 audios, 1 videos)
[2499733559] Creating ICE agent (controlled mode)
Adding 10.0.0.4 to the addresses to gather candidates for
[2499733559] Gathering done for stream 1
[2499733559] Parsing audio candidates (stream=1)...
[2499733559] ICE ufrag (local):   GRFeDTZ1xR3y+rQg
[2499733559] ICE pwd (local):     f6YK5YK4NaqKJqz7Liijuq/H
[2499733559] Fingerprint (local) : sha-256 BD:51:AF:68:92:C0:2A:07:32:2D:EB:4B:64:70:FF:22:00:50:DB:A0:CE:B1:5F:85:A2:85:B6:33:EA:7C:7F:79
[2499733559] DTLS setup (local):  actpass
[2499733559] Peer audio SSRC: 2438394017
[2499733559] Parsing video candidates (stream=0)...
[2499733559] ICE ufrag (local):   GRFeDTZ1xR3y+rQg
[2499733559] ICE pwd (local):     f6YK5YK4NaqKJqz7Liijuq/H
[2499733559] Fingerprint (local) : sha-256 BD:51:AF:68:92:C0:2A:07:32:2D:EB:4B:64:70:FF:22:00:50:DB:A0:CE:B1:5F:85:A2:85:B6:33:EA:7C:7F:79
[2499733559] DTLS setup (local):  actpass
[2499733559] Peer video SSRC: 2260080456
[2499733559] Parsing SCTP candidates (stream=0)...
[2499733559] ICE ufrag (local):   GRFeDTZ1xR3y+rQg
[2499733559] ICE pwd (local):     f6YK5YK4NaqKJqz7Liijuq/H
[2499733559] Fingerprint (local) : sha-256 BD:51:AF:68:92:C0:2A:07:32:2D:EB:4B:64:70:FF:22:00:50:DB:A0:CE:B1:5F:85:A2:85:B6:33:EA:7C:7F:79
[2499733559] DTLS setup (local):  actpass
Got a sctpmap attribute: 5000 webrtc-datachannel 1024
 -------------------------------------------
  >> Anonymized (2735 --> 741 bytes)
 -------------------------------------------
v=0
o=- 724526827003804521 2 IN IP4 127.0.0.1
s=-
t=0 0
m=audio 1 RTP/SAVPF 111 103 104 0 8 106 105 13 126
c=IN IP4 1.1.1.1
a=sendrecv
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
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
m=video 1 RTP/SAVPF 100 116 117 96
c=IN IP4 1.1.1.1
a=sendrecv
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
m=application 1 DTLS/SCTP 5000
c=IN IP4 1.1.1.1
a=sendrecv
{
   "audio": true,
   "video": true
}
Creating plugin result...
Destroying plugin result...
Request completed, freeing data
[2499733559] ICE send thread started...
[2499733559] ICE thread started, looping...
Handling message: {
   "audio": true,
   "video": true
}
Setting audio property: true
Setting video property: true
This is involving a negotiation (offer) as well:
v=0
o=- 724526827003804521 2 IN IP4 127.0.0.1
s=-
t=0 0
m=audio 1 RTP/SAVPF 111 103 104 0 8 106 105 13 126
c=IN IP4 1.1.1.1
a=sendrecv
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
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
m=video 1 RTP/SAVPF 100 116 117 96
c=IN IP4 1.1.1.1
a=sendrecv
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
m=application 1 DTLS/SCTP 5000
c=IN IP4 1.1.1.1
a=sendrecv
Pushing event: {
   "echotest": "event",
   "result": "ok"
}
 -------------------------------------------
  >> Anonymized (741 --> 741 bytes)
 -------------------------------------------
v=0
o=- 724526827003804521 2 IN IP4 127.0.0.1
s=-
t=0 0
m=audio 1 RTP/SAVPF 111 103 104 0 8 106 105 13 126
c=IN IP4 1.1.1.1
a=sendrecv
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
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
m=video 1 RTP/SAVPF 100 116 117 96
c=IN IP4 1.1.1.1
a=sendrecv
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
m=application 1 DTLS/SCTP 5000
c=IN IP4 1.1.1.1
a=sendrecv
[2499733559] No RTP maps?? trying formats...
[2499733559] We have 1 candidates for Stream #1, Component #1
Public IP specified (104.40.190.32), using that as host address in the candidates
[2499733559] Stream #1, Component #1
[2499733559]   Address:    10.0.0.4:59950
[2499733559]   Priority:   2013266431
[2499733559]   Foundation: 1
[2499733559]     a=candidate:1 1 udp 2013266431 104.40.190.32 59950 typ host
[2499733559] No RTP maps?? trying formats...
[2499733559] We have 1 candidates for Stream #1, Component #1
Public IP specified (104.40.190.32), using that as host address in the candidates
[2499733559] Stream #1, Component #1
[2499733559]   Address:    10.0.0.4:59950
[2499733559]   Priority:   2013266431
[2499733559]   Foundation: 1
[2499733559]     a=candidate:1 1 udp 2013266431 104.40.190.32 59950 typ host
[2499733559] No RTP maps?? trying formats...
[2499733559] We have 1 candidates for Stream #1, Component #1
Public IP specified (104.40.190.32), using that as host address in the candidates
[2499733559] Stream #1, Component #1
[2499733559]   Address:    10.0.0.4:59950
[2499733559]   Priority:   2013266431
[2499733559]   Foundation: 1
[2499733559]     a=candidate:1 1 udp 2013266431 104.40.190.32 59950 typ host
 -------------------------------------------
  >> Merged (741 --> 2057 bytes)
 -------------------------------------------
v=0
o=- 724526827003804521 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio video data
a=msid-semantic: WMS janus
m=audio 1 RTP/SAVPF 111 103 104 0 8 106 105 13 126
c=IN IP4 104.40.190.32
a=mid:audio
a=sendrecv
a=rtcp-mux
a=ice-ufrag:oZiD
a=ice-pwd:kI1ArLGc76IkRaYZMmrI7q
a=ice-options:trickle
a=fingerprint:sha-256 C5:5F:DA:7D:84:47:B1:BF:6B:55:16:62:48:31:3E:D3:F1:7B:25:89:92:4A:4B:4D:4D:D9:D5:AF:EA:D8:15:44
a=setup:active
a=connection:new
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
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:296726412 cname:janusaudio
a=ssrc:296726412 msid:janus janusa0
a=ssrc:296726412 mslabel:janus
a=ssrc:296726412 label:janusa0
a=candidate:1 1 udp 2013266431 104.40.190.32 59950 typ host
m=video 1 RTP/SAVPF 100 116 117 96
c=IN IP4 104.40.190.32
a=mid:video
a=sendrecv
a=rtcp-mux
a=ice-ufrag:oZiD
a=ice-pwd:kI1ArLGc76IkRaYZMmrI7q
a=ice-options:trickle
a=fingerprint:sha-256 C5:5F:DA:7D:84:47:B1:BF:6B:55:16:62:48:31:3E:D3:F1:7B:25:89:92:4A:4B:4D:4D:D9:D5:AF:EA:D8:15:44
a=setup:active
a=connection:new
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
a=ssrc:979528336 cname:janusvideo
a=ssrc:979528336 msid:janus janusv0
a=ssrc:979528336 mslabel:janus
a=ssrc:979528336 label:janusv0
a=candidate:1 1 udp 2013266431 104.40.190.32 59950 typ host
m=application 1 DTLS/SCTP 5000
c=IN IP4 104.40.190.32
a=mid:data
a=sctpmap:5000 webrtc-datachannel 16
a=sendrecv
a=ice-ufrag:oZiD
a=ice-pwd:kI1ArLGc76IkRaYZMmrI7q
a=ice-options:trickle
a=fingerprint:sha-256 C5:5F:DA:7D:84:47:B1:BF:6B:55:16:62:48:31:3E:D3:F1:7B:25:89:92:4A:4B:4D:4D:D9:D5:AF:EA:D8:15:44
a=setup:active
a=connection:new
a=candidate:1 1 udp 2013266431 104.40.190.32 59950 typ host
[2499733559] Done! Ready to setup remote candidates and send connectivity checks...
[2499733559]   -- bundle is supported by the browser, getting rid of one of the RTP/RTCP components, if any...
[2499733559]   -- rtcp-mux is supported by the browser, getting rid of RTCP components, if any...
Still trickling, but we can start send connectivity checks already, now
[2499733559] Adding event to queue of messages...
  >> Pushing event: 0 (took 1550 us)
We have a message to serve...
        {
   "janus": "event",
   "session_id": 2251804388,
   "sender": 2499733559,
   "transaction": "3BbxPIRBZIio",
   "plugindata": {
      "plugin": "janus.plugin.echotest",
      "data": {
         "echotest": "event",
         "result": "ok"
      }
   },
   "jsep": {
      "type": "answer",
      "sdp": "v=0\r\no=- 724526827003804521 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE audio video data\r\na=msid-semantic: WMS janus\r\nm=audio 1 RTP/SAVPF 111 103 104 0 8 106 105 13 126\r\nc=IN IP4 104.40.190.32\r\na=mid:audio\r\na=sendrecv\r\na=rtcp-mux\na=ice-ufrag:oZiD\r\na=ice-pwd:kI1ArLGc76IkRaYZMmrI7q\r\na=ice-options:trickle\r\na=fingerprint:sha-256 C5:5F:DA:7D:84:47:B1:BF:6B:55:16:62:48:31:3E:D3:F1:7B:25:89:92:4A:4B:4D:4D:D9:D5:AF:EA:D8:15:44\r\na=setup:active\r\na=connection:new\r\na=rtpmap:111 opus/48000/2\r\na=fmtp:111 minptime=10\r\na=rtpmap:103 ISAC/16000\r\na=rtpmap:104 ISAC/32000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:106 CN/32000\r\na=rtpmap:105 CN/16000\r\na=rtpmap:13 CN/8000\r\na=rtpmap:126 telephone-event/8000\r\na=maxptime:60\r\na=ssrc:296726412 cname:janusaudio\r\na=ssrc:296726412 msid:janus janusa0\r\na=ssrc:296726412 mslabel:janus\r\na=ssrc:296726412 label:janusa0\r\na=candidate:1 1 udp 2013266431 104.40.190.32 59950 typ host\r\nm=video 1 RTP/SAVPF 100 116 117 96\r\nc=IN IP4 104.40.190.32\r\na=mid:video\r\na=sendrecv\r\na=rtcp-mux\na=ice-ufrag:oZiD\r\na=ice-pwd:kI1ArLGc76IkRaYZMmrI7q\r\na=ice-options:trickle\r\na=fingerprint:sha-256 C5:5F:DA:7D:84:47:B1:BF:6B:55:16:62:48:31:3E:D3:F1:7B:25:89:92:4A:4B:4D:4D:D9:D5:AF:EA:D8:15:44\r\na=setup:active\r\na=connection:new\r\na=rtpmap:100 VP8/90000\r\na=rtcp-fb:100 ccm fir\r\na=rtcp-fb:100 nack\r\na=rtcp-fb:100 nack pli\r\na=rtcp-fb:100 goog-remb\r\na=rtpmap:116 red/90000\r\na=rtpmap:117 ulpfec/90000\r\na=rtpmap:96 rtx/90000\r\na=fmtp:96 apt=100\r\na=ssrc:979528336 cname:janusvideo\r\na=ssrc:979528336 msid:janus janusv0\r\na=ssrc:979528336 mslabel:janus\r\na=ssrc:979528336 label:janusv0\r\na=candidate:1 1 udp 2013266431 104.40.190.32 59950 typ host\r\nm=application 1 DTLS/SCTP 5000\r\nc=IN IP4 104.40.190.32\r\na=mid:data\r\na=sctpmap:5000 webrtc-datachannel 16\r\na=sendrecv\r\na=ice-ufrag:oZiD\r\na=ice-pwd:kI1ArLGc76IkRaYZMmrI7q\r\na=ice-options:trickle\r\na=fingerprint:sha-256 C5:5F:DA:7D:84:47:B1:BF:6B:55:16:62:48:31:3E:D3:F1:7B:25:89:92:4A:4B:4D:4D:D9:D5:AF:EA:D8:15:44\r\na=setup:active\r\na=connection:new\r\na=candidate:1 1 udp 2013266431 104.40.190.32 59950 typ host\r\n"
   }
}
Request completed, freeing data
lminiero commented 9 years ago

Please don't past long logs as comments, they make threads unreadable: use services like pastebin or similar for the purpose. Apart from that, the log is incomplete, as no detail related to the ICE connectivity checks is available (did they succeed? fail? what about DTLS?). You can find more info on what happens on a handle using the admin API: a demo page is available for that as well, but you'll have to enable the administration features in the settings.

dmerlitti commented 9 years ago

Dear Lorenzo, sorry for the long logs. I have enabled the administration features (http://iudev.cloudapp.net/janus/admin.html). Now, after starting the echo test, I can see the session, the handle and the handle info but I am a complete newbie with Janus and I do not see anything relevant :-(

lminiero commented 9 years ago

The info to look at are in the components arrays, in particular the state, which refers to the ICE state, and the DTLS related information. I guess that in your case the issue is related to ports being closed or unreachable, which can make the ICE connectivity checks fail: in such case, you'd get a failed state there. If ICE is OK but DTLS is not, the reported info will be different.

dmerlitti commented 9 years ago

Ok, the "state" is "failed". The components array contains this info:

"components": [
                {
                    "id": 1,
                    "state": "failed",
                    "local-candidates": [
                        "a=candidate:1 1 udp 2013266431 104.40.190.32 32887 typ host\r\n"
                    ],
                    "remote-candidates": [
                        "candidate:2367656776 1 udp 2122260223 192.168.0.9 54468 typ host generation 0",
                        "candidate:3054232416 1 udp 2122194687 169.254.80.80 54469 typ host generation 0",
                        "candidate:1434301788 1 udp 2122129151 192.168.0.10 54470 typ host generation 0",
                        "candidate:608181405 1 udp 1686052607 80.180.162.247 54468 typ srflx raddr 192.168.0.9 rport 54468 generation 0",
                        "candidate:2741881992 1 udp 1685921535 80.180.162.247 54470 typ srflx raddr 192.168.0.10 rport 54470 generation 0"
                    ],
                    "dtls": {}
                }
            ]

Now the question is: is it possibile to get Janus working on a predefined range of ip-addresses?

lminiero commented 9 years ago

No, because of the dynamic nature of the ports chosen for real-time multimedia communication. You can get them in a range using the libnice feature I mentioned, but you still need a large number of ports open for the purpose (e.g., 10000-20000) otherwise you'll incur in errors as soon as numbers start to grow. You MIGHT do something like that involving TURN, where you have a TURN server deployed somewhere and Janus always talking to its single port, but

 1. we support TURN but only on the client side, not within Janus right now;
 2. it would add delay for every call, and a burden on the TURN server.
dmerlitti commented 9 years ago

Dear Lorenzo, I thank you very much for your support, I really appreciate it. I think Azure is not the best cloud IaaS platform to make experiments with Janus and WebRTC. I'll try on Aruba Cloud.

lminiero commented 9 years ago

Yes, it may be a problem with Azure, I guess. Are you sure you cannot open more ports at the same time, though? AFAIK Amazon has the same kind of configuration and Janus works fine there (once you open a large number of ports, that is).

Anyway, closing as it looks like a server issue.

ldenoue commented 9 years ago

I also get sometimes some server errors when using the janus_recordplay.c plugin. On the client side, I get a "oncleanup" message and the recordings are empty on disk.

[ERR] [ice.c:janus_ice_cb_component_state_changed:1018:] [2199408902] ICE failed for component 1 in stream 1...

Any idea if enabling TURN in Janus (you've added this recently I think) could help?

Laurent

lminiero commented 9 years ago

An ICE failed error means no connectivity ould be established for media between Janus and the client, so TURN can indeed help increasing the chances of getting a working connection, yes.

ldenoue commented 9 years ago

any idea why it would work one minute and not the next? It seems strange that all of a sudden TURN would be required.

lminiero commented 9 years ago

There are several different reasons why ICE may fail. You should check what's happening with Wireshark, with the aid from the info provided by the admin API.

ldenoue commented 9 years ago

looks fine today. I've updated to the latest Janus, enabled TURN and added my TURN server information in janus.cfg file. Thanks for your help.