title: WebRTC muxing using BUNDLE in Java
body: <p>I am searching for low level implementation details on muxing RTP and RTCP streams using BUNDLE on a Java based server. With Chrome as my source, this is what a local SDP looks like:</p>
  <pre>
  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
  </pre>
  <p>I've google'd etc and have not found what I need as of yet. I did find this page and it only has mostly high-level info, but again I need more: <a href="https://datatracker.ietf.org/doc/html/draft-ejzak-avtcore-rtp-subsessions-01" rel="nofollow noreferrer">https://datatracker.ietf.org/doc/html/draft-ejzak-avtcore-rtp-subsessions-01</a></p>
  <p>In addition, I am subscribed to <a href="https://groups.google.com/forum/#!aboutgroup/discuss-webrtc" rel="nofollow noreferrer">https://groups.google.com/forum/#!aboutgroup/discuss-webrtc</a> but I haven't seen any low level information about how muxing works with <pre>a=group:BUNDLE audio video data</pre> is used.</p>
  <p>Related questions:
  <br />
  <a href="https://stackoverflow.com/questions/20229599/webrtc-java-server-trouble">WebRTC java server trouble</a>
  <br />
  <a href="https://stackoverflow.com/questions/2431516/how-can-i-mux-demux-rtp-media-from-one-stream">How can I mux/demux RTP media from one stream?</a></p>