webrtc janus服務器調試工具 admin api 詳解(二)調試janus看這一篇就夠了!!

在上一篇發佈的時候離現在已經過去不少的時間, 這段時間也一直處理這個問題, 最終解決了它,因爲自己內容的原因,自己也走不了少的彎路,比如增加一些配置問題, coturn在測試網站 是通的,但實際使用的時候是不通的, (具體原因還不瞭解)現在都解決了, 自己之前保存的也亂掉的,寫的有些不好,以後想好會微調本博客

在調試janus的時候,因爲底層是調用底層webrtc的api,包含http, https,websocket, ice連接,dtls連接,等許多傳輸方式,在外網調試的時候經常會遇到黑屏,光有聲音沒有畫面等一系列問題, 但是遇到這些情況到底是什麼原因引起的呢, 如果要根據日誌, 其具體情況也是模糊不清的, 一些中間變量到底缺少什麼呢, 這時就需要admin api, 這工具實在是太有用的。
瀏覽器也有一些中間情況的調試 比如,chrome瀏覽器 chrome://webrtc-internals firfox瀏覽器 about:webrtc, 但是別的端也沒得工具了, 比如手機, 前段時間調試videocall功能, 手機端一直調試不通, 在瘋狂找尋解決方案的時候,看到了admin api, 也利用這個工具解決的自己的問題。

成功的handles

{
    "session_id": 4709436143336474,
    "session_last_activity": 938106145327,
    "session_transport": "janus.transport.http",
    "handle_id": 5789998927964963,
    "opaque_id": "videocalltest-exp2R7ARfc2e",
    "loop-running": true,
    "created": 938056512086,
    "current_time": 938113653201,
    "plugin": "janus.plugin.videocall",
    "plugin_specific": {
        "state": "incall",
        "username": "11",
        "peer": "868047048785234",
        "audio_active": true,
        "video_active": true,
        "audio_codec": "opus",
        "video_codec": "vp8",
        "bitrate": 0,
        "slowlink_count": 0,
        "incall": 1,
        "hangingup": 0,
        "destroyed": 0
    },
    "flags": {
        "got-offer": true,
        "got-answer": true,
        "negotiated": true,
        "processing-offer": false,
        "starting": true,
        "ice-restart": false,
        "ready": true,
        "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": true,
        "cleaning": false
    },
    "agent-created": 938100862880,
    "ice-mode": "full",
    "ice-role": "controlled",
    "sdps": {
        "profile": "UDP/TLS/RTP/SAVPF",
        "local": "v=0\r\no=- 6604980758976787289 2 IN IP4 139.198.21.32\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1\r\na=msid-semantic: WMS janus\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 126\r\nc=IN IP4 139.198.21.32\r\na=sendrecv\r\na=mid:0\r\na=rtcp-mux\r\na=ice-ufrag:VDh4\r\na=ice-pwd:BVY7eQtEfKPxnR0HLv6GLB\r\na=ice-options:trickle\r\na=fingerprint:sha-256 DA:BA:EE:27:78:AF:6D:72:78:8D:5D:13:65:94:BA:87:F2:98:49:30:55:C1:06:E6:79:D9:F4:3E:6C:5C:E8:8B\r\na=setup:active\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=rtpmap:111 opus/48000/2\r\na=fmtp:111 minptime=10; useinbandfec=1\r\na=rtpmap:103 ISAC/16000\r\na=rtpmap:104 ISAC/32000\r\na=rtpmap:9 G722/8000\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=msid:janus janusa0\r\na=ssrc:3007781558 cname:janus\r\na=ssrc:3007781558 msid:janus janusa0\r\na=ssrc:3007781558 mslabel:janus\r\na=ssrc:3007781558 label:janusa0\r\na=candidate:1 1 udp 2013266431 10.180.16.16 30341 typ host\r\na=candidate:2 1 udp 1677722111 139.198.21.32 30341 typ srflx raddr 10.180.16.16 rport 30341\r\na=end-of-candidates\r\nm=video 9 UDP/TLS/RTP/SAVPF 96 98 100 97 99 101\r\nc=IN IP4 139.198.21.32\r\na=sendrecv\r\na=mid:1\r\na=rtcp-mux\r\na=ice-ufrag:VDh4\r\na=ice-pwd:BVY7eQtEfKPxnR0HLv6GLB\r\na=ice-options:trickle\r\na=fingerprint:sha-256 DA:BA:EE:27:78:AF:6D:72:78:8D:5D:13:65:94:BA:87:F2:98:49:30:55:C1:06:E6:79:D9:F4:3E:6C:5C:E8:8B\r\na=setup:active\r\na=extmap:14 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:13 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:12 urn:3gpp:video-orientation\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 transport-cc\r\na=rtpmap:98 VP9/90000\r\na=rtcp-fb:98 ccm fir\r\na=rtcp-fb:98 nack\r\na=rtcp-fb:98 nack pli\r\na=rtcp-fb:98 goog-remb\r\na=rtcp-fb:98 transport-cc\r\na=rtpmap:100 VP9/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=rtcp-fb:100 transport-cc\r\na=rtpmap:97 rtx/90000\r\na=fmtp:97 apt=96\r\na=rtpmap:99 rtx/90000\r\na=fmtp:99 apt=98\r\na=rtpmap:101 rtx/90000\r\na=fmtp:101 apt=100\r\na=ssrc-group:FID 1928236914 2073398329\r\na=msid:janus janusv0\r\na=ssrc:1928236914 cname:janus\r\na=ssrc:1928236914 msid:janus janusv0\r\na=ssrc:1928236914 mslabel:janus\r\na=ssrc:1928236914 label:janusv0\r\na=ssrc:2073398329 cname:janus\r\na=ssrc:2073398329 msid:janus janusv0\r\na=ssrc:2073398329 mslabel:janus\r\na=ssrc:2073398329 label:janusv0\r\na=candidate:1 1 udp 2013266431 10.180.16.16 30341 typ host\r\na=candidate:2 1 udp 1677722111 139.198.21.32 30341 typ srflx raddr 10.180.16.16 rport 30341\r\na=end-of-candidates\r\nm=application 0 UDP/DTLS/SCTP 0\r\nc=IN IP4 139.198.21.32\r\na=inactive\r\n",
        "remote": "v=0\r\no=- 815922366182672713 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1 2\r\na=msid-semantic: WMS hAHEZJCyj0sW6zXhQ4jeskuGEmrWiaUHtmww\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:aERs\r\na=ice-pwd:YwuQ9HVjbcV/CvcGeK1aIT3s\r\na=ice-options:trickle\r\na=fingerprint:sha-256 9C:8B:28:7F:97:7C:CA:B7:64:BC:46:5B:42:31:35:BA:B7:55:10:9F:C6:D9:DF:B9:E6:95:C7:93:3C:08:07:28\r\na=setup:actpass\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:3 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=sendrecv\r\na=msid:hAHEZJCyj0sW6zXhQ4jeskuGEmrWiaUHtmww bf352498-e8f9-4eed-a554-3ec5e7ae7ca0\r\na=rtcp-mux\r\na=rtpmap:111 opus/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:103 ISAC/16000\r\na=rtpmap:104 ISAC/32000\r\na=rtpmap:9 G722/8000\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:110 telephone-event/48000\r\na=rtpmap:112 telephone-event/32000\r\na=rtpmap:113 telephone-event/16000\r\na=rtpmap:126 telephone-event/8000\r\na=ssrc:3305798903 cname:qRF1CYUPDDog5DKD\r\na=ssrc:3305798903 msid:hAHEZJCyj0sW6zXhQ4jeskuGEmrWiaUHtmww bf352498-e8f9-4eed-a554-3ec5e7ae7ca0\r\na=ssrc:3305798903 mslabel:hAHEZJCyj0sW6zXhQ4jeskuGEmrWiaUHtmww\r\na=ssrc:3305798903 label:bf352498-e8f9-4eed-a554-3ec5e7ae7ca0\r\nm=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 122 127 121 125 107 108 109 124 120 123 119 114 115 116\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:aERs\r\na=ice-pwd:YwuQ9HVjbcV/CvcGeK1aIT3s\r\na=ice-options:trickle\r\na=fingerprint:sha-256 9C:8B:28:7F:97:7C:CA:B7:64:BC:46:5B:42:31:35:BA:B7:55:10:9F:C6:D9:DF:B9:E6:95:C7:93:3C:08:07:28\r\na=setup:actpass\r\na=mid:1\r\na=extmap:14 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:13 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:12 urn:3gpp:video-orientation\r\na=extmap:2 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:8 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07\r\na=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\na=extmap:3 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=sendrecv\r\na=msid:hAHEZJCyj0sW6zXhQ4jeskuGEmrWiaUHtmww fa481682-cca4-48ba-b051-f854a8ffc039\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 transport-cc\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=rtpmap:97 rtx/90000\r\na=fmtp:97 apt=96\r\na=rtpmap:98 VP9/90000\r\na=rtcp-fb:98 goog-remb\r\na=rtcp-fb:98 transport-cc\r\na=rtcp-fb:98 ccm fir\r\na=rtcp-fb:98 nack\r\na=rtcp-fb:98 nack pli\r\na=fmtp:98 profile-id=0\r\na=rtpmap:99 rtx/90000\r\na=fmtp:99 apt=98\r\na=rtpmap:100 VP9/90000\r\na=rtcp-fb:100 goog-remb\r\na=rtcp-fb:100 transport-cc\r\na=rtcp-fb:100 ccm fir\r\na=rtcp-fb:100 nack\r\na=rtcp-fb:100 nack pli\r\na=fmtp:100 profile-id=2\r\na=rtpmap:101 rtx/90000\r\na=fmtp:101 apt=100\r\na=rtpmap:102 H264/90000\r\na=rtcp-fb:102 goog-remb\r\na=rtcp-fb:102 transport-cc\r\na=rtcp-fb:102 ccm fir\r\na=rtcp-fb:102 nack\r\na=rtcp-fb:102 nack pli\r\na=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\r\na=rtpmap:122 rtx/90000\r\na=fmtp:122 apt=102\r\na=rtpmap:127 H264/90000\r\na=rtcp-fb:127 goog-remb\r\na=rtcp-fb:127 transport-cc\r\na=rtcp-fb:127 ccm fir\r\na=rtcp-fb:127 nack\r\na=rtcp-fb:127 nack pli\r\na=fmtp:127 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f\r\na=rtpmap:121 rtx/90000\r\na=fmtp:121 apt=127\r\na=rtpmap:125 H264/90000\r\na=rtcp-fb:125 goog-remb\r\na=rtcp-fb:125 transport-cc\r\na=rtcp-fb:125 ccm fir\r\na=rtcp-fb:125 nack\r\na=rtcp-fb:125 nack pli\r\na=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=rtpmap:107 rtx/90000\r\na=fmtp:107 apt=125\r\na=rtpmap:108 H264/90000\r\na=rtcp-fb:108 goog-remb\r\na=rtcp-fb:108 transport-cc\r\na=rtcp-fb:108 ccm fir\r\na=rtcp-fb:108 nack\r\na=rtcp-fb:108 nack pli\r\na=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f\r\na=rtpmap:109 rtx/90000\r\na=fmtp:109 apt=108\r\na=rtpmap:124 H264/90000\r\na=rtcp-fb:124 goog-remb\r\na=rtcp-fb:124 transport-cc\r\na=rtcp-fb:124 ccm fir\r\na=rtcp-fb:124 nack\r\na=rtcp-fb:124 nack pli\r\na=fmtp:124 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d0032\r\na=rtpmap:120 rtx/90000\r\na=fmtp:120 apt=124\r\na=rtpmap:123 H264/90000\r\na=rtcp-fb:123 goog-remb\r\na=rtcp-fb:123 transport-cc\r\na=rtcp-fb:123 ccm fir\r\na=rtcp-fb:123 nack\r\na=rtcp-fb:123 nack pli\r\na=fmtp:123 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640032\r\na=rtpmap:119 rtx/90000\r\na=fmtp:119 apt=123\r\na=rtpmap:114 red/90000\r\na=rtpmap:115 rtx/90000\r\na=fmtp:115 apt=114\r\na=rtpmap:116 ulpfec/90000\r\na=ssrc-group:FID 1419345867 4186372101\r\na=ssrc:1419345867 cname:qRF1CYUPDDog5DKD\r\na=ssrc:1419345867 msid:hAHEZJCyj0sW6zXhQ4jeskuGEmrWiaUHtmww fa481682-cca4-48ba-b051-f854a8ffc039\r\na=ssrc:1419345867 mslabel:hAHEZJCyj0sW6zXhQ4jeskuGEmrWiaUHtmww\r\na=ssrc:1419345867 label:fa481682-cca4-48ba-b051-f854a8ffc039\r\na=ssrc:4186372101 cname:qRF1CYUPDDog5DKD\r\na=ssrc:4186372101 msid:hAHEZJCyj0sW6zXhQ4jeskuGEmrWiaUHtmww fa481682-cca4-48ba-b051-f854a8ffc039\r\na=ssrc:4186372101 mslabel:hAHEZJCyj0sW6zXhQ4jeskuGEmrWiaUHtmww\r\na=ssrc:4186372101 label:fa481682-cca4-48ba-b051-f854a8ffc039\r\nm=application 9 UDP/DTLS/SCTP webrtc-datachannel\r\nc=IN IP4 0.0.0.0\r\na=ice-ufrag:aERs\r\na=ice-pwd:YwuQ9HVjbcV/CvcGeK1aIT3s\r\na=ice-options:trickle\r\na=fingerprint:sha-256 9C:8B:28:7F:97:7C:CA:B7:64:BC:46:5B:42:31:35:BA:B7:55:10:9F:C6:D9:DF:B9:E6:95:C7:93:3C:08:07:28\r\na=setup:actpass\r\na=mid:2\r\na=sctp-port:5000\r\na=max-message-size:262144\r\n"
    },
    "queued-packets": 0,
    "streams": [
        {
            "id": 1,
            "ready": -1,
            "ssrc": {
                "audio": 3007781558,
                "video": 1928236914,
                "video-rtx": 2073398329,
                "audio-peer": 3305798903,
                "video-peer": 1419345867,
                "video-peer-rtx": 4186372101
            },
            "direction": {
                "audio-send": true,
                "audio-recv": true,
                "video-send": true,
                "video-recv": true
            },
            "codecs": {
                "audio-pt": 111,
                "audio-codec": "opus",
                "video-pt": 96,
                "video-rtx-pt": 97,
                "video-codec": "vp8"
            },
            "bwe": {
                "twcc": true,
                "twcc-ext-id": 2
            },
            "rtcp_stats": {
                "audio": {
                    "base": 48000,
                    "rtt": 46,
                    "lost": 0,
                    "lost-by-remote": 0,
                    "jitter-local": 2,
                    "jitter-remote": 3,
                    "in-link-quality": 100,
                    "in-media-link-quality": 100,
                    "out-link-quality": 0,
                    "out-media-link-quality": 0
                },
                "video": {
                    "base": 90000,
                    "rtt": 45,
                    "lost": 0,
                    "lost-by-remote": 0,
                    "jitter-local": 4,
                    "jitter-remote": 10,
                    "in-link-quality": 100,
                    "in-media-link-quality": 100,
                    "out-link-quality": 100,
                    "out-media-link-quality": 100
                }
            },
            "components": [
                {
                    "id": 1,
                    "state": "ready",
                    "connected": 938104539138,
                    "local-candidates": [
                        "1 1 udp 2013266431 10.180.16.16 30341 typ host",
                        "2 1 udp 1677722111 139.198.21.32 30341 typ srflx raddr 10.180.16.16 rport 30341"
                    ],
                    "remote-candidates": [
                        "2205748223 1 udp 2122260223 192.168.0.244 49886 typ host generation 0 ufrag aERs network-id 1",
                        "remote1 1 udp 1853824767 171.217.92.33 2065 typ prflx raddr 171.217.92.33 rport 2065\r\n"
                    ],
                    "selected-pair": "139.198.21.32:30341 [srflx,udp] <-> 171.217.92.33:2065 [prflx,udp]",
                    "dtls": {
                        "fingerprint": "DA:BA:EE:27:78:AF:6D:72:78:8D:5D:13:65:94:BA:87:F2:98:49:30:55:C1:06:E6:79:D9:F4:3E:6C:5C:E8:8B",
                        "remote-fingerprint": "9C:8B:28:7F:97:7C:CA:B7:64:BC:46:5B:42:31:35:BA:B7:55:10:9F:C6:D9:DF:B9:E6:95:C7:93:3C:08:07:28",
                        "remote-fingerprint-hash": "sha-256",
                        "dtls-role": "active",
                        "dtls-state": "connected",
                        "retransmissions": 0,
                        "valid": true,
                        "srtp-profile": "SRTP_AES128_CM_SHA1_80",
                        "ready": true,
                        "handshake-started": 938104539150,
                        "connected": 938104638695
                    },
                    "in_stats": {
                        "audio_packets": 450,
                        "audio_bytes": 43277,
                        "audio_bytes_lastsec": 4855,
                        "do_audio_nacks": false,
                        "video_packets": 428,
                        "video_bytes": 352272,
                        "video_bytes_lastsec": 52000,
                        "do_video_nacks": true,
                        "video_nacks": 0,
                        "video_retransmissions": 0,
                        "data_packets": 2,
                        "data_bytes": 1804
                    },
                    "out_stats": {
                        "audio_packets": 430,
                        "audio_bytes": 33264,
                        "audio_bytes_lastsec": 3727,
                        "audio_nacks": 0,
                        "video_packets": 1420,
                        "video_bytes": 1558826,
                        "video_bytes_lastsec": 209718,
                        "video_nacks": 0,
                        "data_packets": 3,
                        "data_bytes": 1686
                    }
                }
            ]
        }
    ]
}

這是一個成功的handles, 這裏面重要的是
1 sdps, 這裏包含一個offer 和一個answer的sdp, 可以利用這個sdp查看一些連接的基本內容。
2 components, 這裏包含 candidates的信息, dtls的信息。而components裏的內容是我主要利用的內容。

  1. local-candidates 本地候選者,
  2. remote-candidates 遠端候選者
  3. selected-pair 連接
  4. dtls dtls連接狀態

失敗例子1

"components": [
    {
        "id": 0,
        "state": "disconnected",
        "local-candidates": [
            "1 1 udp 2013266431 172.17.0.3 46008 typ host\r\n",
            "2 1 udp 2013266431 143.225.229.138 60710 typ host\r\n",
            "3 1 udp 2013266431 2002:8fe1:1cc3:b:5c48:51ff:fee9:11ef 58925 typ host\r\n",
            "4 1 udp 2013266431 fec0::b:5c48:51ff:fee9:11ef 52486 typ host\r\n"
        ],
        "dtls": {},
        "in_stats": {},
        "out_stats": {}
    }
]

state的狀態是"disconnected", 這意味着根本沒有啓動連接狀態檢查, dtls的數據也是爲空的, 這是什麼原因引起的呢,這隻有本地候選者, 沒有遠端候選者,這說明客戶端沒有上報信息到janus,janus沒有信息所以建立不了連接。這時檢查offersdp及回覆的answer有什麼問題。
失敗例子2

"components": [
	{
		"id": 1,
		"state": "failed",
		"local-candidates": [
			"1 1 udp 2013266431 172.17.0.3 42083 typ host\r\n",
			"2 1 udp 2013266431 143.225.229.138 41619 typ host\r\n",
			"3 1 udp 2013266431 2002:8fe1:1cc3:b:5c48:51ff:fee9:11ef 46602 typ host\r\n",
			"4 1 udp 2013266431 fec0::b:5c48:51ff:fee9:11ef 33518 typ host\r\n"
		],
		"remote-candidates": [
			"1434301788 1 udp 2122260223 192.168.0.10 56611 typ host generation 0"
		],
		"dtls": {},
		"in_stats": {},
		"out_stats": {}
	}
]

這裏的遠端候選者的ip是一個本地ip, 不是一個公網ip, 這說明客戶端上報的時候沒有上報自己的公網ip,在做連接的時候兩臺機器不在一個內網環境的話,光本地ip是連接不通的, 引起的原因如下 :
1.缺少足夠的數據來使ICE連接成功
2.網絡問題, 防火牆或者別的原因引起的ICE連接不成功
3.客戶端沒有配置STUN服務器,
4.客戶端配置了STUN服務器,但STUN服務器有問題或者連接STUN有問題

說明: janus服務需要ICE連接相互流轉media數據的, 所以janus服務端要配置一個STUN, 而客戶端也需要各自配置STUN服務,缺少一個都會導致不通。

失敗例子3

"components": [
	{
		"id": 1,
		"state": "connected",
		"local-candidates": [
			"1 1 udp 2013266431 172.17.0.3 50886 typ host\r\n",
			"2 1 udp 2013266431 143.225.229.138 58254 typ host\r\n",
			"3 1 udp 2013266431 2002:8fe1:1cc3:b:5c48:51ff:fee9:11ef 49885 typ host\r\n",
			"4 1 udp 2013266431 fec0::b:5c48:51ff:fee9:11ef 50676 typ host\r\n"
		],
		"remote-candidates": [
			"1434301788 1 udp 2122260223 192.168.0.10 49782 typ host generation 0",
			"2741881992 1 udp 1686052607 95.247.194.217 49782 typ srflx raddr 192.168.0.10 rport 49782 generation 0"
		],
		"selected-pair": "2  2741881992",
		"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": "FF:12:C8:72:DA:61:86:E5:01:BD:C0:3C:BE:06:A9:E7:99:44:7B:A7:D2:B8:80:CA:D3:D8:FE:F2:5D:88:D1:21",
			"dtls-role": "passive",
			"dtls-state": "connected",
			"valid": 1,
			"ready": 1
		},
		"in_stats": {
			"audio_bytes": 0,
			"video_bytes": 0,
			"data_bytes": 900,
			"audio_nacks": 0,
			"video_nacks": 0,
			"audio_bytes_lastsec": 0,
			"video_bytes_lastsec": 0
		},
		"out_stats": {
			"audio_bytes": 0,
			"video_bytes": 0,
			"data_bytes": 1227,
			"audio_nacks": 0,
			"video_nacks": 0
		}
	}
]

這是ICE是成功的, dtls-state也是連接的, 但是數據流還是沒有, 這可能 就是插件配置裏的問題,可能是沒有訂閱或者 其他 的問題導致的。
失敗例子4:

 "components": [
                {
                    "id": 1,
                    "state": "connecting",
                    "local-candidates": [
                        "1 1 udp 2013266431 10.180.16.16 21218 typ host"
                    ],
                    "remote-candidates": [
                        "1874011935 1 udp 2122260223 192.168.0.85 34949 typ host generation 0 ufrag PcfJPuJHsdXPdhEL"
                    ],
                    "dtls": {
                        "fingerprint": "DA:BA:EE:27:78:AF:6D:72:78:8D:5D:13:65:94:BA:87:F2:98:49:30:55:C1:06:E6:79:D9:F4:3E:6C:5C:E8:8B",
                        "remote-fingerprint": "A0:C6:38:91:03:39:10:BC:E0:EC:51:95:DB:44:66:61:94:66:86:D8:D7:B9:DF:79:E7:9F:92:F1:F5:20:45:72",
                        "remote-fingerprint-hash": "sha-256",
                        "dtls-role": "active",
                        "dtls-state": "created",
                        "retransmissions": 0,
                        "valid": false,
                        "srtp-profile": "none",
                        "ready": 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,
                        "video_retransmissions": 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
                    }
                }
            ]

ice連接失敗,創建 selected-pair失敗是ice_lite janus在janus配置支持ICE_LITE的時候報的錯, 這導致的原因是STUN服務和janus配置不一致
失敗例子5

"components": [
                {
                    "id": 1,
                    "state": "failed",
                    "failed-detected": 941643429515,
                    "icetimer-started": true,
                    "local-candidates": [
                        "1 1 udp 2013266431 10.180.16.16 28940 typ host",
                        "2 1 udp 1677722111 139.198.21.32 28940 typ srflx raddr 10.180.16.16 rport 28940"
                    ],
                    "remote-candidates": [
                        "1874011935 1 udp 2122260223 192.168.0.85 45539 typ host generation 0 ufrag KCkidTnB/c3JOLqJ"
                    ],
                    "dtls": {
                        "fingerprint": "DA:BA:EE:27:78:AF:6D:72:78:8D:5D:13:65:94:BA:87:F2:98:49:30:55:C1:06:E6:79:D9:F4:3E:6C:5C:E8:8B",
                        "remote-fingerprint": "4B:2A:B6:E8:C9:BB:EE:97:C4:AC:5D:A2:7F:C8:78:20:57:BC:D0:38:16:A7:98:5E:78:0B:86:CE:C2:38:CD:08",
                        "remote-fingerprint-hash": "sha-256",
                        "dtls-role": "active",
                        "dtls-state": "created",
                        "retransmissions": 0,
                        "valid": false,
                        "srtp-profile": "none",
                        "ready": false
                    },

這個是janus full_trickle時,STUN服務跟janus不一致導致的。這些都 是ICE連接的失敗。

發佈了27 篇原創文章 · 獲贊 11 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章