WebRTC使用Java中的BUNDLE进行多路复用

时间:2014-07-09 22:52:36

标签: java webrtc sdp rtcp

我正在基于Java的服务器上使用BUNDLE搜索关于复用RTP和RTCP流的低级实现细节。以Chrome作为我的来源,这就是本地SDP的样子:

o=- 8554465656018336221 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio video data
a=msid-semantic: WMS
m=audio 1 RTP/SAVPF 111 103 104 0 8 126
c=IN IP4 0.0.0.0
a=rtcp:1 IN IP4 0.0.0.0
a=ice-ufrag:Vw+winZTN4ejhvQJ
a=ice-pwd:ufBTUw/iszvCbL53dmPHQAYK
a=ice-options:google-ice
a=fingerprint: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:audio
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-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 telephone-event/8000
a=maxptime:60
m=video 1 RTP/SAVPF 100 116 117
c=IN IP4 0.0.0.0
a=rtcp:1 IN IP4 0.0.0.0
a=ice-ufrag:Vw+winZTN4ejhvQJ
a=ice-pwd:ufBTUw/iszvCbL53dmPHQAYK
a=ice-options:google-ice
a=fingerprint: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 fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=rtcp-fb:100 goog-remb
a=rtpmap:116 red/90000
a=rtpmap:117 ulpfec/90000
m=application 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=fingerprint: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:data
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 audio video data
的低级别信息。

相关问题:
WebRTC java server trouble
How can I mux/demux RTP media from one stream?

1 个答案:

答案 0 :(得分:2)

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

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

在Chrome中,您可以通过SDP交换向相应的SSRC ID发出警报,方法是为每个媒体级别(一个用于视频,一个用于音频)包含a=ssrc:<ID>

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