我正在搜索有关在基于Java的服务器上使用BUNDLE混合RTP和RTCP流的底层实现细节。使用Chrome作为来源,本地SDP如下所示:

o =-8554465656018336221 2 IN IP4 127.0.0.1
s =-
t = 0 0
a = group:BUNDLE音频视频数据
a = msid语义:WMS
m =音频1 RTP / SAVPF 111103104 0 8126
c = IN IP4 0.0.0.0
a = rtcp:1输入IP4 0.0.0.0
a = ice-ufrag:Vw + winZTN4ejhvQJ
a = ice-pwd:ufBTUw / iszvCbL53dmPHQAYK
a = ice-options:google-ice
a =指纹:sha-256 5C:C6:19:38:4D:54:57:71:16:3F:67:A6:C8:21:CC:29:88:85:22:86:53:E5 :7B:3F:3D:A4:5C:E5:BC:29:D8:B5
a = setup:actpass
a = mid:音频
a = extmap:1 urn:ietf:params:rtp-hdrext:ssrc音频级别
a = extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a = recvonly
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:126电话事件/ 8000
a = maxptime:60
m =视频1 RTP / SAVPF 100116117
c = IN IP4 0.0.0.0
a = rtcp:1输入IP4 0.0.0.0
a = ice-ufrag:Vw + winZTN4ejhvQJ
a = ice-pwd:ufBTUw / iszvCbL53dmPHQAYK
a = ice-options:google-ice
a =指纹:sha-256 5C:C6:19:38:4D:54:57:71:16:3F:67:A6:C8:21:CC:29:88:85:22:86:53:E5 :7B:3F:3D:A4:5C:E5:BC:29:D8:B5
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 = recvonly
a = rtcp-mux
a = rtpmap:100 VP8 / 90000
a = rtcp-fb:100 ccm冷杉
a = rtcp-fb:100小
a = rtcp-fb:100 nack pli
a = rtcp-fb:100 goog-remb
a = rtpmap:116红色/ 90000
a = rtpmap:117 ulpfec / 90000
m =应用程序1 DTLS / SCTP 5000
c = IN IP4 0.0.0.0
a = ice-ufrag:Vw + winZTN4ejhvQJ
a = ice-pwd:ufBTUw / iszvCbL53dmPHQAYK
a = ice-options:google-ice
a =指纹:sha-256 5C:C6:19:38:4D:54:57:71:16:3F:67:A6:C8:21:CC:29:88:85:22:86:53:E5 :7B:3F:3D:A4:5C:E5:BC:29:D8:B5
a = setup:actpass
a = mid:数据
a = sctpmap:5000 webrtc-datachannel 1024


我已经在google等网站上找到了我需要的东西。我确实找到了该页面,并且该页面仅包含高级信息,但再次需要更多信息:http://tools.ietf.org/html/draft-ejzak-avtcore-rtp-subsessions-01

另外,我订阅了https://groups.google.com/forum/#!aboutgroup/discuss-webrtc,但没有看到有关使用a = group:BUNDLE音频视频数据进行混合的任何低级信息。

相关问题:

WebRTC java server trouble

How can I mux/demux RTP media from one stream?

最佳答案

所有这些意味着数据正在通过同一端口发送。这并不意味着数据包本身会以任何方式修改。

分离出数据包的方法(知道哪些是音频/视频以及它们各自的控制数据包)是对照RTP / RTCP数据包头中的它们各自的SSRC对其进行检查。这样,您就不会在给定音频控制包的情况下修改视频流,反之亦然。

在Chrome浏览器中,您可以通过在SDP交换中为每个媒体级别添加a=ssrc:<ID>来提醒相应的SSRC ID(一个用于视频级别,一个用于视频级别,一个用于音频)。

看起来两种媒体类型的SDP都设置为recvonly。这意味着它不接收任何RTCP,而只会将它们发送回发送方,以便可以相应地修改流。

关于java - 在Java中使用BUNDLE的WebRTC混合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24664903/

10-10 04:15