janus videoroom之媒体订阅

读者可以先看我的博客:janus videoroom之媒体发布

在这里插入图片描述

当入会者1向房间1中发布视频时,其他入会者可以订阅该视频。首先入会者2向janus服务器发送订阅请求,janus服务端找到对应的发布者视频媒体sdp描述信息,如下所示:

v=0
o=- 2774875306933722082 2 IN IP4 1.1.1.1
s=VideoRoom 38572132
t=0 0
c=IN IP4 127.0.0.1
m=video 9 UDP/TLS/RTP/SAVPF 127
c=IN IP4 127.0.0.1
b=AS:4096
a=recvonly
a=rtpmap:127 H264/90000
a=fmtp:127 profile-level-id=42e01f;packetization-mode=1
a=rtcp-fb:127 ccm fir
a=rtcp-fb:127 nack
a=rtcp-fb:127 nack pli
a=rtcp-fb:127 goog-remb
a=rtcp-fb:127 transport-cc
a=extmap:3 urn:3gpp:video-orientation

a=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay

再给订阅者返回之前,经过ice层添加对应的端口,如下所示

v=0
o=- 1657528761490180 1 IN IP4 127.0.0.1
s=VideoRoom 80499983
t=0 0
a=group:BUNDLE video
a=msid-semantic: WMS janus
m=video 9 UDP/TLS/RTP/SAVPF 107 108
c=IN IP4 127.0.0.1
a=sendonly
a=mid:video
a=rtcp-mux
a=ice-ufrag:Sx50
a=ice-pwd:BNOlvoeUcs5EhRtUWE1nDi
a=ice-options:trickle
a=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
a=setup:actpass
a=rtpmap:107 H264/90000
a=fmtp:107 profile-level-id=42e01f;packetization-mode=1
a=rtcp-fb:107 ccm fir
a=rtcp-fb:107 nack
a=rtcp-fb:107 nack pli
a=rtcp-fb:107 goog-remb
a=extmap:3 urn:3gpp:video-orientation
a=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=rtpmap:108 rtx/90000
a=fmtp:108 apt=107
a=ssrc-group:FID 4000596417 2557397809
a=ssrc:4000596417 cname:janusvideo
a=ssrc:4000596417 msid:janus janusv0
a=ssrc:4000596417 mslabel:janus
a=ssrc:4000596417 label:janusv0
a=ssrc:2557397809 cname:janusvideo
a=ssrc:2557397809 msid:janus janusv0
a=ssrc:2557397809 mslabel:janus
a=ssrc:2557397809 label:janusv0
a=candidate:1 1 udp 2015363327 127.0.0.1 23931 typ host
a=end-of-candidates

注意,上面的o后面的两个会话id 2774875306933722082和1657528761490180没对上,这是因为本人的视频发布者sdp信息采取的还是上篇文档的sdp,正常而言,是一样的。

可以看到,此sdp中带candidate信息,即后续janus服务器以此端口向订阅者发送入会者1的视频流。

入会者2收到此sdp后,通过SetRemoteDescription保存此交互sdp,然后CreateAnswer创建应答,此应答会产生本地sdp的回调,在回调函数中,将本端的sdp发往janus服务端:

v=0
o=- 8464309584402593635 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE video
a=msid-semantic: WMS
m=video 9 UDP/TLS/RTP/SAVPF 107 108
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:YorM
a=ice-pwd:w8DxM+FORxtZAfQ4onFg5sYe
a=ice-options:trickle
a=fingerprint:sha-256 9C:97:E1:63:68:0A:93:59:52:DD:34:98:A9:E3:8E:C8:0E:F2:75:69:AB:FC:8B:9E:B7:7D:1A:8C:D8:B1:8B:F0
a=setup:active
a=mid:video
a=extmap:3 urn:3gpp:video-orientation
a=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=recvonly
a=rtcp-mux
a=rtpmap:107 H264/90000
a=rtcp-fb:107 goog-remb
a=rtcp-fb:107 ccm fir
a=rtcp-fb:107 nack
a=rtcp-fb:107 nack pli
a=fmtp:107 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
a=rtpmap:108 rtx/90000
a=fmtp:108 apt=107

同时该sdp也会被SetLocalDescription保存起来,同时SetLocalDescription的调用会触发本端候选者(candidate)的收集,candidate的收集信息如下:

candidate:3128384608 1 udp 2122260223 10.0.0.29 51270 typ host generation 0 ufrag YorM network-id 1

该地址信息用于从janus接收入会者1的视频信息,将此信息发给janus服务端。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值