2

我正在寻找在基于 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 111 103 104 0 8 126
c=IN IP4 0.0.0.0
a=rtcp:1 在 IP4 0.0.0.0
a=ice-ufrag:大众+winZTN4ejhvQJ
a=ice-pwd:ufBTUw/iszvCbL53dmPHQAYK
a=冰选项:谷歌冰
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=设置:actpass
a=中:音频
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=recvonly
a=rtcp 多路复用器
a=rtpmap:111 作品/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 100 116 117
c=IN IP4 0.0.0.0
a=rtcp:1 在 IP4 0.0.0.0
a=ice-ufrag:大众+winZTN4ejhvQJ
a=ice-pwd:ufBTUw/iszvCbL53dmPHQAYK
a=冰选项:谷歌冰
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=设置:actpass
a=中:视频
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 多路复用器
a=rtpmap:100 VP8/90000
a=rtcp-fb:100 立方厘米冷杉
a=rtcp-fb:100 nack
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:大众+winZTN4ejhvQJ
a=ice-pwd:ufBTUw/iszvCbL53dmPHQAYK
a=冰选项:谷歌冰
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=设置:actpass
a=中:数据
a=sctpmap:5000 webrtc-datachannel 1024

我已经用谷歌搜索了等,但到目前为止还没有找到我需要的东西。我确实找到了这个页面,它只包含高级信息,但我需要更多信息:https ://datatracker.ietf.org/doc/html/draft-ejzak-avtcore-rtp-subsessions-01

此外,我订阅了https://groups.google.com/forum/#!aboutgroup/discuss-webrtc但我还没有看到任何关于 muxing 如何使用的低级信息

a=group:BUNDLE 音频视频数据
用来。

相关问题:
WebRTC java 服务器故障
如何从一个流中复用/解复用 RTP 媒体?

4

1 回答 1

2

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

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

a=ssrc:<ID>在 chrome 中,您可以通过 SDP 交换通过包括每个媒体级别(一个用于视频,一个用于音频)来使其对相应的 SSRC id 发出警报。

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

于 2014-07-10T14:02:02.990 回答