欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

全面解析 RTCPeerConnection 的 iceTransportPolicy 配置

最编程 2024-08-07 08:10:18
...

介绍

RTCConfiguration.iceTransportPolicy 定义了 ICE 候选策略,浏览器使用该策略向应用程序显示允许的候选者,只有这些候选项将用于连接检查。

const pc = new RTCPeerConnection({ iceTransportPolicy: 'all' });

注意:ICE 代理候选项有四类,主机候选项、服务器反射候选项、对等反射候选项和中继候选项。

ICE.jpg

枚举值说明

all(默认值):ICE 代理使用所有类型的候选对象进行连接检查。此时四种候选都会做尝试。

relay:ICE 代理只使用媒体中继候选者,如经过 TURN 服务器的候选项。

验证环境

内网里面一台 Janus 服务器,同时使用内网中的电脑进行访问。

TURN server 和 Janus 服务器在同一台设备上,通过内网穿透的云服务将 UDP 3487 端口映射到公网,映射的结果是 free.svipss.top:51351(121.199.22.135:51351)。

  • Janus 服务器地址:192.168.100.221
  • 浏览器所在电脑地址:192.168.100.108
  • TURN server 地址:192.168.100.221,映射后地址端口:free.svipss.top:51351

TURN server 使用 coturn 搭建,配置文件如下:

# TURN server name and realm
realm=192.168.100.221
server-name=turnserver

# Use fingerprint in TURN message
fingerprint

# IPs the TURN server listens to
# listening-ip=192.168.10.221

# External IP-Address of the TURN server
#external-ip=121.199.22.135

# Main listening port
listening-port=3478

# Further ports that are open for communication
min-port=20000
max-port=22000

# Enable verbose logging
verbose

# Specify the user for the TURN authentification
user=test:123456

# Enable long-term credential mechanism
lt-cred-mech

对比结果

主要差异在浏览器 onicecandidate 上报的 candidate 信息中有所不同。

使用 all 的情况下,浏览器 onicecandidate 上报的 candidate 信息中包含五个候选项

candidate:173396259 1 udp 2122260223 172.30.192.1 59765 typ host generation 0 ufrag 7+eD network-id 1
candidate:1497262264 1 udp 2122194687 192.168.100.108 59766 typ host generation 0 ufrag 7+eD network-id 2
candidate:1154887123 1 tcp 1518280447 172.30.192.1 9 typ host tcptype active generation 0 ufrag 7+eD network-id 1
candidate:398300232 1 tcp 1518214911 192.168.100.108 9 typ host tcptype active generation 0 ufrag 7+eD network-id 2
candidate:821307257 1 udp 1685987071 192.168.100.108 55506 typ srflx raddr 192.168.100.108 rport 59766 generation 0 ufrag 7+eD network-id 2

使用 relay 的情况下,浏览器 onicecandidate 上报的 candidate 信息中只有一个候选项

candidate:3363055999 1 udp 41819903 192.168.100.221 20522 typ relay raddr 0.0.0.0 rport 0 generation 0 ufrag 5Kjh network-id 2

疑问: 为啥使用 all 时未获取到 relay 候选项???

信令及网络抓包文件备份位置

  • 链接: pan.baidu.com/s/1OldaPtfG…
  • 提取码: s58r
  • 复制这段内容后打开百度网盘手机App,操作更方便哦

信令分析

all

初始化代码
    const pc = new RTCPeerConnection({
      iceServers: [
        {
          urls: ['turn:free.svipss.top:51351'],
          username: 'test',
          credential: '123456',
          credentialType: 'password',
        },
      ],
      iceTransportPolicy: 'all',
      iceCandidatePoolSize: '0',
      bundlePolicy: 'max-bundle',
      rtcpMuxPolicy: 'require',
      tcpCandidatePolicy: 'disable',
      IceTransportsType: 'nohost',
    });

浏览器 onicecandidate 上报的 candidate 信息
candidate:173396259 1 udp 2122260223 172.30.192.1 59765 typ host generation 0 ufrag 7+eD network-id 1
candidate:1497262264 1 udp 2122194687 192.168.100.108 59766 typ host generation 0 ufrag 7+eD network-id 2
candidate:1154887123 1 tcp 1518280447 172.30.192.1 9 typ host tcptype active generation 0 ufrag 7+eD network-id 1
candidate:398300232 1 tcp 1518214911 192.168.100.108 9 typ host tcptype active generation 0 ufrag 7+eD network-id 2
candidate:821307257 1 udp 1685987071 192.168.100.108 55506 typ srflx raddr 192.168.100.108 rport 59766 generation 0 ufrag 7+eD network-id 2
Janus 传输过来的 candidate
candidate:1 1 udp 2013266431 192.168.100.221 20651 typ host
candidate:4 1 udp 1677722111 36.17.176.200 26569 typ srflx raddr 192.168.100.221 rport 20651
浏览器上报的 offer sdp
v=0
o=- 5247939015171769789 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0 1
a=extmap-allow-mixed
a=msid-semantic: WMS mYoc2iUHPjJzLofS9GBRCjDxlGlYlwmGR7sU
m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 121 127 120 125 107 108 109 35 36 124 119 123 118 114 115 116
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:7+eD
a=ice-pwd:3+VGTgzV7gkUlIdpnWAkWqBo
a=ice-options:trickle
a=fingerprint:sha-256 BA:A3:B8:06:91:1D:69:7A:C9:46:58:B1:A7:A5:E1:C6:F7:16:86:71:71:8F:2C:27:D9:95:89:FA:7A:A7:FA:79
a=setup:actpass
a=mid:0
a=extmap:1 urn:ietf:params:rtp-hdrext:toffset
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:3 urn:3gpp:video-orientation
a=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space
a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendonly
a=msid:mYoc2iUHPjJzLofS9GBRCjDxlGlYlwmGR7sU 72421008-3d5b-41ca-b4c8-50a0ed51a76b
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 goog-remb
a=rtcp-fb:96 transport-cc
a=rtcp-fb:96 ccm fir
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=rtpmap:97 rtx/90000
a=fmtp:97 apt=96
a=rtpmap:98 VP9/90000
a=rtcp-fb:98 goog-remb
a=rtcp-fb:98 transport-cc
a=rtcp-fb:98 ccm fir
a=rtcp-fb:98 nack
a=rtcp-fb:98 nack pli
a=fmtp:98 profile-id=0
a=rtpmap:99 rtx/90000
a=fmtp:99 apt=98
a=rtpmap:100 VP9/90000
a=rtcp-fb:100 goog-remb
a=rtcp-fb:100 transport-cc
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=fmtp:100 profile-id=2
a=rtpmap:101 rtx/90000
a=fmtp:101 apt=100
a=rtpmap:102 H264/90000
a=rtcp-fb:102 goog-remb
a=rtcp-fb:102 transport-cc
a=rtcp-fb:102 ccm fir
a=rtcp-fb:102 nack
a=rtcp-fb:102 nack pli
a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
a=rtpmap:121 rtx/90000
a=fmtp:121 apt=102
a=rtpmap:127 H264/90000
a=rtcp-fb:127 goog-remb
a=rtcp-fb:127 transport-cc
a=rtcp-fb:127 ccm fir
a=rtcp-fb:127 nack
a=rtcp-fb:127 nack pli
a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f
a=rtpmap:120 rtx/90000
a=fmtp:120 apt=127
a=rtpmap:125 H264/90000
a=rtcp-fb:125 goog-remb
a=rtcp-fb:125 transport-cc
a=rtcp-fb:125 ccm fir
a=rtcp-fb:125 nack
a=rtcp-fb:125 nack pli
a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
a=rtpmap:107 rtx/90000
a=fmtp:107 apt=125
a=rtpmap:108 H264/90000
a=rtcp-fb:108 goog-remb
a=rtcp-fb:108 transport-cc
a=rtcp-fb:108 ccm fir
a=rtcp-fb:108 nack
a=rtcp-fb:108 nack pli
a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f
a=rtpmap:109 rtx/90000
a=fmtp:109 apt=108
a=rtpmap:35 AV1X/90000
a=rtcp-fb:35 goog-remb
a=rtcp-fb:35 transport-cc
a=rtcp-fb:35 ccm fir
a=rtcp-fb:35 nack
a=rtcp-fb:35 nack pli
a=rtpmap:36 rtx/90000
a=fmtp:36 apt=35
a=rtpmap:124 H264/90000
a=rtcp-fb:124 goog-remb
a=rtcp-fb:124 transport-cc
a=rtcp-fb:124 ccm fir
a=rtcp-fb:124 nack
a=rtcp-fb:124 nack pli
a=fmtp:124 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f
a=rtpmap:119 rtx/90000
a=fmtp:119 apt=124
a=rtpmap:123 H264/90000
a=rtcp-fb:123 goog-remb
a=rtcp-fb:123 transport-cc
a=rtcp-fb:123 ccm fir
a=rtcp-fb:123 nack
a=rtcp-fb:123 nack pli
a=fmtp:123 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001f
a=rtpmap:118 rtx/90000
a=fmtp:118 apt=123
a=rtpmap:114 red/90000
a=rtpmap:115 rtx/90000
a=fmtp:115 apt=114
a=rtpmap:116 ulpfec/90000
a=ssrc-group:FID 380787905 4099067239
a=ssrc:380787905 cname:VY2dNUk0w4Gmvv8S
a=ssrc:380787905 msid:mYoc2iUHPjJzLofS9GBRCjDxlGlYlwmGR7sU 72421008-3d5b-41ca-b4c8-50a0ed51a76b
a=ssrc:380787905 mslabel:mYoc2iUHPjJzLofS9GBRCjDxlGlYlwmGR7sU
a=ssrc:380787905 label:72421008-3d5b-41ca-b4c8-50a0ed51a76b
a=ssrc:4099067239 cname:VY2dNUk0w4Gmvv8S
a=ssrc:4099067239 msid:mYoc2iUHPjJzLofS9GBRCjDxlGlYlwmGR7sU 72421008-3d5b-41ca-b4c8-50a0ed51a76b
a=ssrc:4099067239 mslabel:mYoc2iUHPjJzLofS9GBRCjDxlGlYlwmGR7sU
a=ssrc:4099067239 label:72421008-3d5b-41ca-b4c8-50a0ed51a76b
m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:7+eD
a=ice-pwd:3+VGTgzV7gkUlIdpnWAkWqBo
a=ice-options:trickle
a=fingerprint:sha-256 BA:A3:B8:06:91:1D:69:7A:C9:46:58:B1:A7:A5:E1:C6:F7:16:86:71:71:8F:2C:27:D9:95:89:FA:7A:A7:FA:79
a=setup:actpass
a=mid:1
a=extmap:14 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendonly
a=msid:mYoc2iUHPjJzLofS9GBRCjDxlGlYlwmGR7sU 0986d5d3-0703-4003-b37e-8d899f0a69de
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:9 G722/8000
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:110 telephone-event/48000
a=rtpmap:112 telephone-event/32000
a=rtpmap:113 telephone-event/16000
a=rtpmap:126 telephone-event/8000
a=ssrc:1580989886 cname:VY2dNUk0w4Gmvv8S
a=ssrc:1580989886 msid:mYoc2iUHPjJzLofS9GBRCjDxlGlYlwmGR7sU 0986d5d3-0703-4003-b37e-8d899f0a69de
a=ssrc:1580989886 mslabel:mYoc2iUHPjJzLofS9GBRCjDxlGlYlwmGR7sU
a=ssrc:1580989886 label:0986d5d3-0703-4003-b37e-8d899f0a69de
Janus 传输过来的 answer sdp
v=0
o=- 5247939015171769789 2 IN IP4 115.197.188.117
s=VideoRoom 5422429170528909
t=0 0
a=group:BUNDLE 0 1
a=msid-semantic: WMS janus
m=video 9 UDP/TLS/RTP/SAVPF 102 121
c=IN IP4 115.197.188.117
a=recvonly
a=mid:0
a=rtcp-mux
a=ice-ufrag:fzZp
a=ice-pwd:Hw0H6Sq7a3ntWGGjNUYOmv
a=ice-options:trickle
a=fingerprint:sha-256 10:DC:68:A0:93:38:C8:91:E0:E1:C2:6C:7B:32:5F:1F:C2:7A:AE:73:47:92:C5:CC:3A:52:DA:D8:E3:4B:A0:82
a=setup:active
a=rtpmap:102 H264/90000
a=fmtp:102 profile-level-id=42e01f;packetization-mode=1
a=rtcp-fb:102 ccm fir
a=rtcp-fb:102 nack
a=rtcp-fb:102 nack pli
a=rtcp-fb:102 goog-remb
a=rtcp-fb:102 transport-cc
a=extmap:3 urn:3gpp:video-orientation
a=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=rtpmap:121 rtx/90000
a=fmtp:121 apt=102
a=msid:janus janusv0
a=ssrc:893736536 cname:janus
a=ssrc:893736536 msid:janus janusv0
a=ssrc:893736536 mslabel:janus
a=ssrc:893736536 label:janusv0
a=ssrc:2410485626 cname:janus
a=ssrc:2410485626 msid:janus janusv0
a=ssrc:2410485626 mslabel:janus
a=ssrc:2410485626 label:janusv0
m=audio 9 UDP/TLS/RTP/SAVPF 111
c=IN IP4 115.197.188.117
a=recvonly
a=mid:1
a=rtcp-mux
a=ice-ufrag:fzZp
a=ice-pwd:Hw0H6Sq7a3ntWGGjNUYOmv
a=ice-options:trickle
a=fingerprint:sha-256 10:DC:68:A0:93:38:C8:91:E0:E1:C2:6C:7B:32:5F:1F:C2:7A:AE:73:47:92:C5:CC:3A:52:DA:D8:E3:4B:A0:82
a=setup:active
a=rtpmap:111 opus/48000/2
a=extmap:14 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=msid:janus janusa0
a=ssrc:3761314916 cname:janus
a=ssrc:3761314916 msid:janus janusa0
a=ssrc:3761314916 mslabel:janus
a=ssrc:3761314916 label:janusa0

relay

初始化代码
    const pc = new RTCPeerConnection({
      iceServers: [
        {
          urls: ['turn:free.svipss.top:51351'],
          username: 'test',
          credential: '123456',
          credentialType: 'password',
        },
      ],
      iceTransportPolicy: 'relay',
      iceCandidatePoolSize: '0',
      bundlePolicy: 'max-bundle',
      rtcpMuxPolicy: 'require',
      tcpCandidatePolicy: 'disable',
      IceTransportsType: 'nohost',
    });

信令及网络抓包文件备份位置
浏览器 onicecandidate 上报的 candidate 信息
candidate:3363055999 1 udp 41819903 192.168.100.221 20522 typ relay raddr 0.0.0.0 rport 0 generation 0 ufrag 5Kjh network-id 2
Janus 传输过来的 candidate
candidate:1 1 udp 2013266431 192.168.100.221 20727 typ host
candidate:4 1 udp 1677722111 36.17.176.200 26559 typ srflx raddr 192.168.100.221 rport 20727
浏览器上报的 offer sdp
v=0
o=- 9201388016073680007 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0 1
a=extmap-allow-mixed
a=msid-semantic: WMS uwxAqntLGCUoAu6ORa4hzgqkL1xnH4QVco5r
m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 121 127 120 125 107 108 109 35 36 124 119 123 118 114 115 116
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:5Kjh
a=ice-pwd:m6q+npyV1IZKeyHnnUqHRqM7
a=ice-options:trickle
a=fingerprint:sha-256 39:E0:CD:AC:CE:A9:A7:FC:9C:3B:9D:18:2B:57:89:02:A5:76:F9:88:58:6E:08:F7:19:A2:89:D7:37:D4:BE:BE
a=setup:actpass
a=mid:0
a=extmap:1 urn:ietf:params:rtp-hdrext:toffset
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:3 urn:3gpp:video-orientation
a=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space
a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendonly
a=msid:uwxAqntLGCUoAu6ORa4hzgqkL1xnH4QVco5r a7da6eca-a701-47ae-97a3-a5f80531a766
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 goog-remb
a=rtcp-fb:96 transport-cc
a=rtcp-fb:96 ccm fir
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=rtpmap:97 rtx/90000
a=fmtp:97 apt=96
a=rtpmap:98 VP9/90000
a=rtcp-fb:98 goog-remb
a=rtcp-fb:98 transport-cc
a=rtcp-fb:98 ccm fir
a=rtcp-fb:98 nack
a=rtcp-fb:98 nack pli
a=fmtp:98 profile-id=0
a=rtpmap:99 rtx/90000
a=fmtp:99 apt=98
a=rtpmap:100 VP9/90000
a=rtcp-fb:100 goog-remb
a=rtcp-fb:100 transport-cc
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=fmtp:100 profile-id=2
a=rtpmap:101 rtx/90000
a=fmtp:101 apt=100
a=rtpmap:102 H264/90000
a=rtcp-fb:102 goog-remb
a=rtcp-fb:102 transport-cc
a=rtcp-fb:102 ccm fir
a=rtcp-fb:102 nack
a=rtcp-fb:102 nack pli
a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
a=rtpmap:121 rtx/90000
a=fmtp:121 apt=102
a=rtpmap:127 H264/90000
a=rtcp-fb:127 goog-remb
a=rtcp-fb:127 transport-cc
a=rtcp-fb:127 ccm fir
a=rtcp-fb:127 nack
a=rtcp-fb:127 nack pli
a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f
a=rtpmap:120 rtx/90000
a=fmtp:120 apt=127
a=rtpmap:125 H264/90000
a=rtcp-fb:125 goog-remb
a=rtcp-fb:125 transport-cc
a=rtcp-fb:125 ccm fir
a=rtcp-fb:125 nack
a=rtcp-fb:125 nack pli
a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
a=rtpmap:107 rtx/90000
a=fmtp:107 apt=125
a=rtpmap:108 H264/90000
a=rtcp-fb:108 goog-remb
a=rtcp-fb:108 transport-cc
a=rtcp-fb:108 ccm fir
a=rtcp-fb:108 nack
a=rtcp-fb:108 nack pli
a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f
a=rtpmap:109 rtx/90000
a=fmtp:109 apt=108
a=rtpmap:35 AV1X/90000
a=rtcp-fb:35 goog-remb
a=rtcp-fb:35 transport-cc
a=rtcp-fb:35 ccm fir
a=rtcp-fb:35 nack
a=rtcp-fb:35 nack pli
a=rtpmap:36 rtx/90000
a=fmtp:36 apt=35
a=rtpmap:124 H264/90000
a=rtcp-fb:124 goog-remb
a=rtcp-fb:124 transport-cc
a=rtcp-fb:124 ccm fir
a=rtcp-fb:124 nack
a=rtcp-fb:124 nack pli
a=fmtp:124 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f
a=rtpmap:119 rtx/90000
a=fmtp:119 apt=124
a=rtpmap:123 H264/90000
a=rtcp-fb:123 goog-remb
a=rtcp-fb:123 transport-cc
a=rtcp-fb:123 ccm fir
a=rtcp-fb:123 nack
a=rtcp-fb:123 nack pli
a=fmtp:123 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001f
a=rtpmap:118 rtx/90000
a=fmtp:118 apt=123
a=rtpmap:114 red/90000
a=rtpmap:115 rtx/90000
a=fmtp:115 apt=114
a=rtpmap:116 ulpfec/90000
a=ssrc-group:FID 3851211885 533968763
a=ssrc:3851211885 cname:z2t/m6UUThUKAgDi
a=ssrc:3851211885 msid:uwxAqntLGCUoAu6ORa4hzgqkL1xnH4QVco5r a7da6eca-a701-47ae-97a3-a5f80531a766
a=ssrc:3851211885 mslabel:uwxAqntLGCUoAu6ORa4hzgqkL1xnH4QVco5r
a=ssrc:3851211885 label:a7da6eca-a701-47ae-97a3-a5f80531a766
a=ssrc:533968763 cname:z2t/m6UUThUKAgDi
a=ssrc:533968763 msid:uwxAqntLGCUoAu6ORa4hzgqkL1xnH4QVco5r a7da6eca-a701-47ae-97a3-a5f80531a766
a=ssrc:533968763 mslabel:uwxAqntLGCUoAu6ORa4hzgqkL1xnH4QVco5r
a=ssrc:533968763 label:a7da6eca-a701-47ae-97a3-a5f80531a766
m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:5Kjh
a=ice-pwd:m6q+npyV1IZKeyHnnUqHRqM7
a=ice-options:trickle
a=fingerprint:sha-256 39:E0:CD:AC:CE:A9:A7:FC:9C:3B:9D:18:2B:57:89:02:A5:76:F9:88:58:6E:08:F7:19:A2:89:D7:37:D4:BE:BE
a=setup:actpass
a=mid:1
a=extmap:14 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendonly
a=msid:uwxAqntLGCUoAu6ORa4hzgqkL1xnH4QVco5r 2d7b5213-1b74-4337-89ca-63066b82ff09
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:9 G722/8000
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:110 telephone-event/48000
a=rtpmap:112 telephone-event/32000
a=rtpmap:113 telephone-event/16000
a=rtpmap:126 telephone-event/8000
a=ssrc:759971761 cname:z2t/m6UUThUKAgDi
a=ssrc:759971761 msid:uwxAqntLGCUoAu6ORa4hzgqkL1xnH4QVco5r 2d7b5213-1b74-4337-89ca-63066b82ff09
a=ssrc:759971761 mslabel:uwxAqntLGCUoAu6ORa4hzgqkL1xnH4QVco5r
a=ssrc:759971761 label:2d7b5213-1b74-4337-89ca-63066b82ff09
Janus 传输过来的 answer sdp
v=0
o=- 9201388016073680007 2 IN IP4 115.197.188.117
s=VideoRoom 5422429170528909
t=0 0
a=group:BUNDLE 0 1
a=msid-semantic: WMS janus
m=video 9 UDP/TLS/RTP/SAVPF 102 121
c=IN IP4 115.197.188.117
a=recvonly
a=mid:0
a=rtcp-mux
a=ice-ufrag:DH79
a=ice-pwd:/U7fmuYsw5nes1eUc2LdTZ
a=ice-options:trickle
a=fingerprint:sha-256 10:DC:68:A0:93:38:C8:91:E0:E1:C2:6C:7B:32:5F:1F:C2:7A:AE:73:47:92:C5:CC:3A:52:DA:D8:E3:4B:A0:82
a=setup:active
a=rtpmap:102 H264/90000
a=fmtp:102 profile-level-id=42e01f;packetization-mode=1
a=rtcp-fb:102 ccm fir
a=rtcp-fb:102 nack
a=rtcp-fb:102 nack pli
a=rtcp-fb:102 goog-remb
a=rtcp-fb:102 transport-cc
a=extmap:3 urn:3gpp:video-orientation
a=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=rtpmap:121 rtx/90000
<