Skip to content

Instantly share code, notes, and snippets.

@silmood
Created January 10, 2019 18:04
Show Gist options
  • Select an option

  • Save silmood/898b29ad3442dbbbf2ea9d61ef4f87bb to your computer and use it in GitHub Desktop.

Select an option

Save silmood/898b29ad3442dbbbf2ea9d61ef4f87bb to your computer and use it in GitHub Desktop.
Janus ICE Failed
Candidate sent! janus.js:1320:4
Object { janus: "ack", session_id: 1924096615761089, transaction: "xgP56XgEwpQW" }
janus.js:1321:4
Candidate sent! janus.js:1320:4
Object { janus: "ack", session_id: 1924096615761089, transaction: "uXKT36AzQujs" }
janus.js:1321:4
Candidate sent! janus.js:1320:4
Object { janus: "ack", session_id: 1924096615761089, transaction: "jo4O3JTNXQUc" }
janus.js:1321:4
Message sent! janus.js:1254:4
Object { janus: "ack", session_id: 1924096615761089, transaction: "Wr8mo1q67I38" }
janus.js:1255:4
Candidate sent! janus.js:1320:4
Object { janus: "ack", session_id: 1924096615761089, transaction: "AeVGHmoeAMsJ" }
janus.js:1321:4
Candidate sent! janus.js:1320:4
Object { janus: "ack", session_id: 1924096615761089, transaction: "sb9QzCycNo0x" }
janus.js:1321:4
Candidate sent! janus.js:1320:4
Object { janus: "ack", session_id: 1924096615761089, transaction: "pvLQsWDvc8eD" }
janus.js:1321:4
Candidate sent! janus.js:1320:4
Object { janus: "ack", session_id: 1924096615761089, transaction: "GaNH0Y8gPZA9" }
janus.js:1321:4
Got a plugin event on session 1924096615761089 janus.js:678:3
Object { janus: "event", session_id: 1924096615761089, transaction: "Wr8mo1q67I38", sender: 947973474655564, plugindata: {…}, jsep: {…} }
janus.js:679:3
-- Event is coming from 947973474655564 (janus.plugin.videoroom) janus.js:690:3
Object { videoroom: "event", room: 1234, configured: "ok", audio_codec: "opus" }
janus.js:692:3
Handling SDP as well... janus.js:700:4
Object { type: "answer", sdp: "v=0\r\no=mozilla...THIS_IS_SDPARTA-64.0 1547143260063346 1 IN IP4 18.214.37.149\r\ns=VideoRoom 1234\r\nt=0 0\r\na=group:BUNDLE 0 1\r\na=msid-semantic: WMS janus\r\nm=audio 9 UDP/TLS/RTP/SAVPF 109\r\nc=IN IP4 18.214.37.149\r\na=recvonly\r\na=mid:0\r\na=rtcp-mux\r\na=ice-ufrag:OK8l\r\na=ice-pwd:Mj7yGrpX7gfKt7s5lUIfje\r\na=ice-options:trickle\r\na=fingerprint:sha-256 D2:B9:31:8F:DF:24:D8:0E:ED:D2:EF:25:9E:AF:6F:B8:34:AE:53:9C:E6:F3:8F:F2:64:15:FA:E8:7F:53:2D:38\r\na=setup:active\r\na=rtpmap:109 opus/48000/2\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=candidate:1 1 udp 2013266431 18.214.37.149 48437 typ host\r\na=candidate:2 1 udp 1677722111 18.214.37.149 48437 typ srflx raddr 10.2.0.167 rport 48437\r\na=candidate:3 1 udp 167772671 10.2.0.167 50132 typ relay raddr 10.2.0.167 rport 48437\r\na=end-of-candidates\r\nm=video 9 UDP/TLS/RTP/SAVPF 120\r\nc=IN IP4 18.214.37.149\r\na=inactive\r\na=mid:1\r\na=rtcp-mux\r\na=ice-ufrag:OK8l\r\na=ice-pwd:Mj7yGrpX7gfKt7s5lUIfje\r\na=ice-options:trickle\r\na=fingerprint:sha-256 D2:B9:31:8F:DF:24:D8:0E:ED:D2:EF:25:9E:AF:6F:B8:34:AE:53:9C:E6:F3:8F:F2:64:15:FA:E8:7F:53:2D:38\r\na=setup:active\r\na=rtpmap:120 VP8/90000\r\na=rtcp-fb:120 ccm fir\r\na=rtcp-fb:120 nack\r\na=rtcp-fb:120 nack pli\r\na=rtcp-fb:120 goog-remb\r\na=rtcp-fb:120 transport-cc\r\na=candidate:1 1 udp 2013266431 18.214.37.149 48437 typ host\r\na=candidate:2 1 udp 1677722111 18.214.37.149 48437 typ srflx raddr 10.2.0.167 rport 48437\r\na=candidate:3 1 udp 167772671 10.2.0.167 50132 typ relay raddr 10.2.0.167 rport 48437\r\na=end-of-candidates\r\n" }
janus.js:701:4
Notifying application... janus.js:705:4
Handling SDP as well... streaming.js:256:6
Object { type: "answer", sdp: "v=0\r\no=mozilla...THIS_IS_SDPARTA-64.0 1547143260063346 1 IN IP4 18.214.37.149\r\ns=VideoRoom 1234\r\nt=0 0\r\na=group:BUNDLE 0 1\r\na=msid-semantic: WMS janus\r\nm=audio 9 UDP/TLS/RTP/SAVPF 109\r\nc=IN IP4 18.214.37.149\r\na=recvonly\r\na=mid:0\r\na=rtcp-mux\r\na=ice-ufrag:OK8l\r\na=ice-pwd:Mj7yGrpX7gfKt7s5lUIfje\r\na=ice-options:trickle\r\na=fingerprint:sha-256 D2:B9:31:8F:DF:24:D8:0E:ED:D2:EF:25:9E:AF:6F:B8:34:AE:53:9C:E6:F3:8F:F2:64:15:FA:E8:7F:53:2D:38\r\na=setup:active\r\na=rtpmap:109 opus/48000/2\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=candidate:1 1 udp 2013266431 18.214.37.149 48437 typ host\r\na=candidate:2 1 udp 1677722111 18.214.37.149 48437 typ srflx raddr 10.2.0.167 rport 48437\r\na=candidate:3 1 udp 167772671 10.2.0.167 50132 typ relay raddr 10.2.0.167 rport 48437\r\na=end-of-candidates\r\nm=video 9 UDP/TLS/RTP/SAVPF 120\r\nc=IN IP4 18.214.37.149\r\na=inactive\r\na=mid:1\r\na=rtcp-mux\r\na=ice-ufrag:OK8l\r\na=ice-pwd:Mj7yGrpX7gfKt7s5lUIfje\r\na=ice-options:trickle\r\na=fingerprint:sha-256 D2:B9:31:8F:DF:24:D8:0E:ED:D2:EF:25:9E:AF:6F:B8:34:AE:53:9C:E6:F3:8F:F2:64:15:FA:E8:7F:53:2D:38\r\na=setup:active\r\na=rtpmap:120 VP8/90000\r\na=rtcp-fb:120 ccm fir\r\na=rtcp-fb:120 nack\r\na=rtcp-fb:120 nack pli\r\na=rtcp-fb:120 goog-remb\r\na=rtcp-fb:120 transport-cc\r\na=candidate:1 1 udp 2013266431 18.214.37.149 48437 typ host\r\na=candidate:2 1 udp 1677722111 18.214.37.149 48437 typ srflx raddr 10.2.0.167 rport 48437\r\na=candidate:3 1 udp 167772671 10.2.0.167 50132 typ relay raddr 10.2.0.167 rport 48437\r\na=end-of-candidates\r\n" }
streaming.js:257:6
::: Got a message (publisher) ::: streaming.js:153:4
Object { videoroom: "event", room: 1234, configured: "ok", audio_codec: "opus" }
streaming.js:154:4
Event: event streaming.js:157:4
Remote description accepted! janus.js:2242:5
::ICE state:: checking streaming.js:116:8
Candidate sent! janus.js:1320:4
Object { janus: "ack", session_id: 1924096615761089, transaction: "DZc0yGV4J5vC" }
janus.js:1321:4
Candidate sent! janus.js:1320:4
Object { janus: "ack", session_id: 1924096615761089, transaction: "IBATWj5Rzu0F" }
janus.js:1321:4
Candidate sent! janus.js:1320:4
Object { janus: "ack", session_id: 1924096615761089, transaction: "WwqdODUpamSU" }
janus.js:1321:4
Candidate sent! janus.js:1320:4
Object { janus: "ack", session_id: 1924096615761089, transaction: "4kjYLMHKv4vs" }
janus.js:1321:4
Candidate sent! janus.js:1320:4
Object { janus: "ack", session_id: 1924096615761089, transaction: "CDdKaW4flWF2" }
janus.js:1321:4
Candidate sent! janus.js:1320:4
Object { janus: "ack", session_id: 1924096615761089, transaction: "WA6WLzWPrvDb" }
janus.js:1321:4
Long poll... janus.js:478:2
::ICE state:: failed streaming.js:116:8
ICE failed, add a TURN server and see about:webrtc for more details
Got a keepalive on session 1924096615761089 janus.js:523:3
Long poll... janus.js:478:2
Got a hangup event on session 1924096615761089 janus.js:603:3
Object { janus: "hangup", session_id: 1924096615761089, sender: 947973474655564, reason: "ICE failed" }
janus.js:604:3
Janus says our WebRTC PeerConnection is downnow streaming.js:128:8
Cleaning WebRTC stuff janus.js:2821:2
Stopping local stream tracks janus.js:2870:5
MediaStreamTrack { kind: "audio", id: "{0967a937-1ba4-5a4f-9b05-b084bf3ac6a7}", label: "Internal Microphone", enabled: true, muted: false, onmute: null, onunmute: null, readyState: "live", onended: null }
janus.js:2874:6
::ICE state:: closed
{
"janus": "success",
"session_id": 8098451631964083,
"transaction": "123456",
"handle_id": 151884537608529,
"info": {
"session_id": 8098451631964083,
"session_last_activity": 8502452696509,
"session_transport": "janus.transport.http",
"handle_id": 151884537608529,
"opaque_id": "tich-ivRqKBs2YVWn",
"created": 8502406144780,
"current_time": 8502461238650,
"plugin": "janus.plugin.videoroom",
"plugin_specific": {
"type": "publisher",
"room": 1234,
"id": 5615294912640493,
"private_id": 2050992803,
"display": "113efbb3-1b34-46c4-965c-a616475bb5a9",
"media": {
"audio": true,
"audio_codec": "opus",
"video": false,
"data": false
},
"bitrate": 128000,
"audio-level-dBov": 0,
"talking": false,
"hangingup": 0,
"destroyed": 0
},
"flags": {
"got-offer": true,
"got-answer": true,
"processing-offer": false,
"starting": true,
"ice-restart": false,
"ready": false,
"stopped": false,
"alert": false,
"trickle": true,
"all-trickles": true,
"resend-trickles": false,
"trickle-synced": false,
"data-channels": false,
"has-audio": true,
"has-video": true,
"new-datachan-sdp": false,
"rfc4588-rtx": false,
"cleaning": false
},
"agent-created": 8502434173095,
"ice-mode": "full",
"ice-role": "controlled",
"ice-loop-running": true,
"sdps": {
"profile": "UDP/TLS/RTP/SAVPF",
"local": "v=0\r\no=mozilla...THIS_IS_SDPARTA-64.0 1547095041547577 1 IN IP4 18.214.37.149\r\ns=VideoRoom 1234\r\nt=0 0\r\na=group:BUNDLE 0 1\r\na=msid-semantic: WMS janus\r\nm=audio 9 UDP/TLS/RTP/SAVPF 109\r\nc=IN IP4 18.214.37.149\r\na=recvonly\r\na=mid:0\r\na=rtcp-mux\r\na=ice-ufrag:HtXB\r\na=ice-pwd:f9+DmLzz8FzyTVP7Ey0s0b\r\na=ice-options:trickle\r\na=fingerprint:sha-256 D2:B9:31:8F:DF:24:D8:0E:ED:D2:EF:25:9E:AF:6F:B8:34:AE:53:9C:E6:F3:8F:F2:64:15:FA:E8:7F:53:2D:38\r\na=setup:active\r\na=rtpmap:109 opus/48000/2\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=candidate:1 1 udp 2013266431 18.214.37.149 37518 typ host\r\na=candidate:2 1 udp 1677722111 18.214.37.149 37518 typ srflx raddr 10.2.0.167 rport 37518\r\na=candidate:3 1 udp 167772671 10.2.0.167 59709 typ relay raddr 10.2.0.167 rport 37518\r\na=end-of-candidates\r\nm=video 9 UDP/TLS/RTP/SAVPF 120\r\nc=IN IP4 18.214.37.149\r\na=inactive\r\na=mid:1\r\na=rtcp-mux\r\na=ice-ufrag:HtXB\r\na=ice-pwd:f9+DmLzz8FzyTVP7Ey0s0b\r\na=ice-options:trickle\r\na=fingerprint:sha-256 D2:B9:31:8F:DF:24:D8:0E:ED:D2:EF:25:9E:AF:6F:B8:34:AE:53:9C:E6:F3:8F:F2:64:15:FA:E8:7F:53:2D:38\r\na=setup:active\r\na=rtpmap:120 VP8/90000\r\na=rtcp-fb:120 ccm fir\r\na=rtcp-fb:120 nack\r\na=rtcp-fb:120 nack pli\r\na=rtcp-fb:120 goog-remb\r\na=rtcp-fb:120 transport-cc\r\na=candidate:1 1 udp 2013266431 18.214.37.149 37518 typ host\r\na=candidate:2 1 udp 1677722111 18.214.37.149 37518 typ srflx raddr 10.2.0.167 rport 37518\r\na=candidate:3 1 udp 167772671 10.2.0.167 59709 typ relay raddr 10.2.0.167 rport 37518\r\na=end-of-candidates\r\n",
"remote": "v=0\r\no=mozilla...THIS_IS_SDPARTA-64.0 8180949629182238932 0 IN IP4 0.0.0.0\r\ns=-\r\nt=0 0\r\na=fingerprint:sha-256 E8:CA:98:D7:48:4F:10:E4:05:F8:F3:1F:7D:77:73:2C:61:0A:6F:43:52:CC:25:38:EE:52:AB:96:43:EE:2E:65\r\na=group:BUNDLE 0 1\r\na=ice-options:trickle\r\na=msid-semantic:WMS *\r\nm=audio 9 UDP/TLS/RTP/SAVPF 109 9 0 8 101\r\nc=IN IP4 0.0.0.0\r\na=sendrecv\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2/recvonly urn:ietf:params:rtp-hdrext:csrc-audio-level\r\na=extmap:3 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=fmtp:109 maxplaybackrate=48000;stereo=1;useinbandfec=1\r\na=fmtp:101 0-15\r\na=ice-pwd:6aea5c03a3ddc30eed8b7c4ac05463fe\r\na=ice-ufrag:2ac81fb0\r\na=mid:0\r\na=msid:{a2fc481c-d0c2-e94b-bff7-b71e33198588} {920b3ae9-07dc-9341-bb90-9d6e23dec183}\r\na=rtcp-mux\r\na=rtpmap:109 opus/48000/2\r\na=rtpmap:9 G722/8000/1\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:101 telephone-event/8000/1\r\na=setup:actpass\r\na=ssrc:1405215945 cname:{4a5327c6-9e77-1c4b-a820-bce8e33260dc}\r\nm=video 9 UDP/TLS/RTP/SAVPF 120 121 126 97\r\nc=IN IP4 0.0.0.0\r\na=recvonly\r\na=extmap:3 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:4 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:5 urn:ietf:params:rtp-hdrext:toffset\r\na=fmtp:126 profile-level-id=42e01f;level-asymmetry-allowed=1;packetization-mode=1\r\na=fmtp:97 profile-level-id=42e01f;level-asymmetry-allowed=1\r\na=fmtp:120 max-fs=12288;max-fr=60\r\na=fmtp:121 max-fs=12288;max-fr=60\r\na=ice-pwd:6aea5c03a3ddc30eed8b7c4ac05463fe\r\na=ice-ufrag:2ac81fb0\r\na=mid:1\r\na=rtcp-fb:120 nack\r\na=rtcp-fb:120 nack pli\r\na=rtcp-fb:120 ccm fir\r\na=rtcp-fb:120 goog-remb\r\na=rtcp-fb:121 nack\r\na=rtcp-fb:121 nack pli\r\na=rtcp-fb:121 ccm fir\r\na=rtcp-fb:121 goog-remb\r\na=rtcp-fb:126 nack\r\na=rtcp-fb:126 nack pli\r\na=rtcp-fb:126 ccm fir\r\na=rtcp-fb:126 goog-remb\r\na=rtcp-fb:97 nack\r\na=rtcp-fb:97 nack pli\r\na=rtcp-fb:97 ccm fir\r\na=rtcp-fb:97 goog-remb\r\na=rtcp-mux\r\na=rtpmap:120 VP8/90000\r\na=rtpmap:121 VP9/90000\r\na=rtpmap:126 H264/90000\r\na=rtpmap:97 H264/90000\r\na=setup:actpass\r\na=ssrc:1962944727 cname:{4a5327c6-9e77-1c4b-a820-bce8e33260dc}\r\n"
},
"queued-packets": 0,
"streams": [
{
"id": 1,
"ready": -1,
"ssrc": {
"audio": 2139287935,
"video": 3220436055,
"audio-peer": 1405215945,
"video-peer": 1962944727
},
"direction": {
"audio-send": false,
"audio-recv": true,
"video-send": false,
"video-recv": false
},
"rtcp_stats": {
"audio": {
"base": 48000,
"rtt": 0,
"lost": 0,
"lost-by-remote": 0,
"jitter-local": 0,
"jitter-remote": 0,
"in-link-quality": 0,
"in-media-link-quality": 0,
"out-link-quality": 0,
"out-media-link-quality": 0
},
"video": {
"base": 90000,
"rtt": 0,
"lost": 0,
"lost-by-remote": 0,
"jitter-local": 0,
"jitter-remote": 0,
"in-link-quality": 0,
"in-media-link-quality": 0,
"out-link-quality": 0,
"out-media-link-quality": 0
}
},
"components": [
{
"id": 1,
"state": "failed",
"failed-detected": 8502460253600,
"icetimer-started": true,
"local-candidates": [
"1 1 udp 2013266431 18.214.37.149 37518 typ host",
"2 1 udp 1677722111 18.214.37.149 37518 typ srflx raddr 10.2.0.167 rport 37518",
"3 1 udp 167772671 10.2.0.167 59709 typ relay raddr 10.2.0.167 rport 37518"
],
"remote-candidates": [
"0 1 UDP 2122252543 192.168.43.39 55252 typ host",
"1 1 UDP 1686052863 201.175.133.147 25054 typ srflx raddr 192.168.43.39 rport 55252"
],
"dtls": {
"fingerprint": "D2:B9:31:8F:DF:24:D8:0E:ED:D2:EF:25:9E:AF:6F:B8:34:AE:53:9C:E6:F3:8F:F2:64:15:FA:E8:7F:53:2D:38",
"remote-fingerprint": "E8:CA:98:D7:48:4F:10:E4:05:F8:F3:1F:7D:77:73:2C:61:0A:6F:43:52:CC:25:38:EE:52:AB:96:43:EE:2E:65",
"remote-fingerprint-hash": "sha-256",
"dtls-role": "active",
"dtls-state": "created",
"retransmissions": 0,
"valid": false,
"srtp-profile": "none",
"ready": false,
"sctp-association": false
},
"in_stats": {
"audio_packets": 0,
"audio_bytes": 0,
"audio_bytes_lastsec": 0,
"do_audio_nacks": false,
"video_packets": 0,
"video_bytes": 0,
"video_bytes_lastsec": 0,
"do_video_nacks": true,
"video_nacks": 0,
"data_packets": 0,
"data_bytes": 0
},
"out_stats": {
"audio_packets": 0,
"audio_bytes": 0,
"audio_bytes_lastsec": 0,
"audio_nacks": 0,
"video_packets": 0,
"video_bytes": 0,
"video_bytes_lastsec": 0,
"video_nacks": 0,
"data_packets": 0,
"data_bytes": 0
}
}
]
}
]
}
}
iceServers: [
{
urls: 'stun:stun.l.google.com:19302'
},
{
urls: 'turn:<ip>', // We've use the same TURN server that we configure in janus.cfg
username: '<user>',
credential: '<pass>'
}
]
// Janus intialization
Janus.init({
debug: true,
iceServers: state.iceServers,
...
})
; General configuration: folders where the configuration and the plugins
; can be found, how output should be logged, whether Janus should run as
; a daemon or in foreground, default interface to use, debug/logging level
; and, if needed, shared apisecret and/or token authentication mechanism
; between application(s) and Janus.
[general]
configs_folder = /opt/janus/etc/janus ; Configuration files folder
plugins_folder = /opt/janus/lib/janus/plugins ; Plugins folder
transports_folder = /opt/janus/lib/janus/transports ; Transports folder
events_folder = /opt/janus/lib/janus/events ; Event handlers folder
;log_to_stdout = false ; Whether the Janus output should be written
; to stdout or not (default=true)
;log_to_file = /path/to/janus.log ; Whether to use a log file or not
;daemonize = true ; Whether Janus should run as a daemon
; or not (default=run in foreground)
;pid_file = /path/to/janus.pid ; PID file to create when Janus has been
; started, and to destroy at shutdown
;interface = 1.2.3.4 ; Interface to use (will be used in SDP)
debug_level = 4 ; Debug/logging level, valid values are 0-7
;debug_timestamps = yes ; Whether to show a timestamp for each log line
;debug_colors = no ; Whether colors should be disabled in the log
;debug_locks = yes ; Whether to enable debugging of locks (very verbose!)
;api_secret = janusrocks ; String that all Janus requests must contain
; to be accepted/authorized by the Janus core.
; Useful if you're wrapping all Janus API requests
; in your servers (that is, not in the browser,
; where you do the things your way) and you
; don't want other application to mess with
; this Janus instance.
;token_auth = yes ; Enable a token based authentication
; mechanism to force users to always provide
; a valid token in all requests. Useful if
; you want to authenticate requests from web
; users.
;token_auth_secret = janus ; Use HMAC-SHA1 signed tokens (with token_auth). Note that
; without this, the Admin API MUST
; be enabled, as tokens are added and removed
; through messages sent there.
admin_secret = <secret> ; String that all Janus requests must contain
; to be accepted/authorized by the admin/monitor.
; only needed if you enabled the admin API
; in any of the available transports.
;server_name = MyJanusInstance ; Public name of this Janus instance
; as it will appear in an info request
;session_timeout = 60 ; How long (in seconds) we should wait before
; deciding a Janus session has timed out. A
; session times out when no request is received
; for session_timeout seconds (default=60s).
; Setting this to 0 will disable the timeout
; mechanism, which is NOT suggested as it may
; risk having orphaned sessions (sessions not
; controlled by any transport and never freed).
; To avoid timeouts, keep-alives can be used.
;
;reclaim_session_timeout = 0 ; How long (in seconds) we should wait for a
; janus session to be reclaimed after the transport
; is gone. After the transport is gone, a session
; times out when no request is received for
; reclaim_session_timeout seconds (default=0s).
; Setting this to 0 will disable the timeout
; mechanism, and sessions will be destroyed immediately
; if the transport is gone.
;
;candidates_timeout = 45 ; How long (in seconds) we should keep hold of
; pending (trickle) candidates before discarding
; them (default=45s). Notice that setting this
; to 0 will NOT disable the timeout, but will
; be considered an invalid value and ignored.
;
;recordings_tmp_ext = tmp ; The extension for recordings, in Janus, is
; .mjr, a custom format we devised ourselves.
; By default, we save to .mjr directly. If you'd
; rather the recording filename have a temporary
; extension while it's being saved, and only
; have the .mjr extension when the recording
; is over (e.g., to automatically trigger some
; external scripts), then uncomment and set the
; recordings_tmp_ext property to the extension
; to add to the base (e.g., tmp --> .mjr.tmp).
; Certificate and key to use for DTLS (and passphrase if needed).
[certificates]
cert_pem = </route/mycert.pem>
cert_key = </route/mycert.key>
;cert_pwd = secretpassphrase
; Media-related stuff: you can configure whether if you want
; to enable IPv6 support (still WIP, so handle with care), if RFC4588
; support should be negotiated or not (off by default), the maximum size
; of the NACK queue (in milliseconds, defaults to 500ms) for retransmissions, the
; range of ports to use for RTP and RTCP (by default, no range is envisaged), the
; starting MTU for DTLS (1200 by default, it adapts automatically), and
; finally how much time, in seconds, should pass with no media (audio or
; video) being received before Janus notifies you about this (default=1s,
; 0 disables these events entirely). Finally, if you're using BoringSSL
; you can customize the frequency of retransmissions: OpenSSL has a fixed
; value of 1 second (the default), while BoringSSL can override that. Notice
; that lower values (e.g., 100ms) will typically get you faster connection
; times, but may not work in case the RTT of the user is high: as such,
; you should pick a reasonable trade-off (usually 2*max expected RTT).
[media]
;ipv6 = true
;max_nack_queue = 500
;rfc_4588 = yes
;rtp_port_range = 20000-40000
;dtls_mtu = 1200
;no_media_timer = 1
;dtls_timeout = 500
; NAT-related stuff: specifically, you can configure the STUN/TURN
; servers to use to gather candidates if the gateway is behind a NAT,
; and srflx/relay candidates are needed. In case STUN is not enough and
; this is needed (it shouldn't), you can also configure Janus to use a
; TURN server; please notice that this does NOT refer to TURN usage in
; browsers, but in the gathering of relay candidates by Janus itself,
; e.g., if you want to limit the ports used by a Janus instance on a
; private machine. Furthermore, you can choose whether Janus should be
; configured to do full-trickle (Janus also trickles its candidates to
; users) rather than the default half-trickle (Janus supports trickle
; candidates from users, but sends its own within the SDP), and whether
; it should work in ICE-Lite mode (by default it doesn't). Finally,
; you can also enable ICE-TCP support (beware that it currently *only*
; works if you enable ICE Lite as well), choose which interfaces should
; be used for gathering candidates, and enable or disable the
; internal libnice debugging, if needed.
[nat]
;stun_server = stun.voip.eutelia.it
;stun_port = 3478
nice_debug = false
;full_trickle = true
;ice_lite = true
;ice_tcp = true
; In case you're deploying Janus on a server which is configured with
; a 1:1 NAT (e.g., Amazon EC2), you might want to also specify the public
; address of the machine using the setting below. This will result in
; all host candidates (which normally have a private IP address) to
; be rewritten with the public address provided in the settings. As
; such, use the option with caution and only if you know what you're doing.
; Make sure you keep ICE Lite disabled, though, as it's not strictly
; speaking a publicly reachable server, and a NAT is still involved.
nat_1_1_mapping = <public ip>
; You can configure a TURN server in two different ways: specifying a
; statically configured TURN server, and thus provide the address of the
; TURN server, the transport (udp/tcp/tls) to use, and a set of valid
; credentials to authenticate...
turn_server = <ip>
turn_port = <port>
turn_type = udp
turn_user = <user>
turn_pwd = <password>
; ... or you can make use of the TURN REST API to get info on one or more
; TURN services dynamically. This makes use of the proposed standard of
; such an API (https://tools.ietf.org/html/draft-uberti-behave-turn-rest-00)
; which is currently available in both rfc5766-turn-server and coturn.
; You enable this by specifying the address of your TURN REST API backend,
; the HTTP method to use (GET or POST) and, if required, the API key Janus
; must provide.
;turn_rest_api = http://yourbackend.com/path/to/api
;turn_rest_api_key = anyapikeyyoumayhaveset
;turn_rest_api_method = GET
; You can also choose which interfaces should be explicitly used by the
; gateway for the purpose of ICE candidates gathering, thus excluding
; others that may be available. To do so, use the 'ice_enforce_list'
; setting and pass it a comma-separated list of interfaces or IP addresses
; to enforce. This is especially useful if the server hosting the gateway
; has several interfaces, and you only want a subset to be used. Any of
; the following examples are valid:
; ice_enforce_list = eth0
; ice_enforce_list = eth0,eth1
; ice_enforce_list = eth0,192.168.
; ice_enforce_list = eth0,192.168.0.1
; By default, no interface is enforced, meaning Janus will try to use them all.
;ice_enforce_list = eth0
; In case you don't want to specify specific interfaces to use, but would
; rather tell Janus to use all the available interfaces except some that
; you don't want to involve, you can also choose which interfaces or IP
; addresses should be excluded and ignored by the gateway for the purpose
; of ICE candidates gathering. To do so, use the 'ice_ignore_list' setting
; and pass it a comma-separated list of interfaces or IP addresses to
; ignore. This is especially useful if the server hosting the gateway
; has several interfaces you already know will not be used or will simply
; always slow down ICE (e.g., virtual interfaces created by VMware).
; Partial strings are supported, which means that any of the following
; examples are valid:
; ice_ignore_list = vmnet8,192.168.0.1,10.0.0.1
; ice_ignore_list = vmnet,192.168.
; Just beware that the ICE ignore list is not used if an enforce list
; has been configured. By default, Janus ignores all interfaces whose
; name starts with 'vmnet', to skip VMware interfaces:
ice_ignore_list = vmnet
; You can choose which of the available plugins should be
; enabled or not. Use the 'disable' directive to prevent Janus from
; loading one or more plugins: use a comma separated list of plugin file
; names to identify the plugins to disable. By default all available
; plugins are enabled and loaded at startup.
[plugins]
; disable = libjanus_voicemail.so,libjanus_recordplay.so
; You can choose which of the available transports should be enabled or
; not. Use the 'disable' directive to prevent Janus from loading one
; or more transport: use a comma separated list of transport file names
; to identify the transports to disable. By default all available
; transports are enabled and loaded at startup.
[transports]
; disable = libjanus_rabbitmq.so
; Event handlers allow you to receive live events from Janus happening
; in core and/or plugins. Since this can require some more resources,
; the feature is disabled by default. Setting broadcast to yes will
; enable them. You can then choose which of the available event handlers
; should be loaded or not. Use the 'disable' directive to prevent Janus
; from loading one or more event handlers: use a comma separated list of
; file names to identify the event handlers to disable. By default, if
; broadcast is set to yes all available event handlers are enabled and
; loaded at startup. Finally, you can choose how often media statistics
; (packets sent/received, losses, etc.) should be sent: by default it's
; once per second (audio and video statistics sent separately), but may
; considered too verbose, or you may want to limit the number of events,
; especially if you have many PeerConnections active. To change this,
; just set 'stats_period' to the number of seconds that should pass in
; between statistics for each handle. Setting it to 0 disables them (but
; not other media-related events).
[events]
; broadcast = yes
; disable = libjanus_sampleevh.so
; stats_period = 5
[947973474655564] Creating ICE agent (ICE Full mode, controlled)
[WARN] Video offered as 'recvonly', but we need 'recvonly' for us: using 'inactive'
[WARN] [5901839917755062] Not video and not audio? dropping (SSRC 2276841017)...
[WARN] [5901839917755062] Not video and not audio? dropping (SSRC 3636612649)...
[WARN] [947973474655564] ICE failed for component 1 in stream 1, but let's give it some time... (trickle received, answer received, alert not set)
[ERR] [ice.c:janus_ice_check_failed:1506] [947973474655564] ICE failed for component 1 in stream 1...
[janus.plugin.videoroom-0x1a53a70] No WebRTC media anymore; 0x1a28800 0x1a42200
[947973474655564] WebRTC resources freed; 0x1a28800 0x1a27e00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment