Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

SampleSdpStrings.js 9.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. /*eslint-disable max-len*/
  2. /*jshint maxlen:false*/
  3. import * as transform from 'sdp-transform';
  4. // A generic sdp session block
  5. const baseSessionSdp = "" +
  6. "v=0\r\n" +
  7. "o=- 814997227879783433 5 IN IP4 127.0.0.1\r\n" +
  8. "s=-\r\n" +
  9. "t=0 0\r\n" +
  10. "a=msid-semantic: WMS 0836cc8e-a7bb-47e9-affb-0599414bc56d\r\n" +
  11. "a=group:BUNDLE audio video data\r\n";
  12. // A basic sdp audio mline with a single stream
  13. const baseAudioMLineSdp = "" +
  14. "m=audio 54405 RTP/SAVPF 111 103 104 126\r\n" +
  15. "c=IN IP4 172.29.32.39\r\n" +
  16. "a=rtpmap:111 opus/48000/2\r\n" +
  17. "a=rtpmap:103 ISAC/16000\r\n" +
  18. "a=rtpmap:104 ISAC/32000\r\n" +
  19. "a=rtpmap:126 telephone-event/8000\r\n" +
  20. "a=fmtp:111 minptime=10;useinbandfec=1\r\n" +
  21. "a=rtcp:9 IN IP4 0.0.0.0\r\n" +
  22. "a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\n" +
  23. "a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\n" +
  24. "a=setup:passive\r\n" +
  25. "a=mid:audio\r\n" +
  26. "a=sendrecv\r\n" +
  27. "a=ice-ufrag:adPg\r\n" +
  28. "a=ice-pwd:Xsr05Mq8S7CR44DAnusZE26F\r\n" +
  29. "a=fingerprint:sha-256 6A:39:DE:11:24:AD:2E:4E:63:D6:69:D3:85:05:53:C7:3C:38:A4:B7:91:74:C0:91:44:FC:94:63:7F:01:AB:A9\r\n" +
  30. "a=candidate:1581043602 1 udp 2122260223 172.29.32.39 54405 typ host generation 0\r\n" +
  31. "a=ssrc:124723944 cname:peDGrDD6WsxUOki/\r\n" +
  32. "a=ssrc:124723944 msid:dcbb0236-cea5-402e-9e9a-595c65ffcc2a 40abf2d3-a415-4c68-8c17-2a038e8bebcf\r\n" +
  33. "a=ssrc:124723944 mslabel:dcbb0236-cea5-402e-9e9a-595c65ffcc2a\r\n" +
  34. "a=ssrc:124723944 label:40abf2d3-a415-4c68-8c17-2a038e8bebcf\r\n" +
  35. "a=rtcp-mux\r\n";
  36. // A basic sdp application mline
  37. const baseDataMLineSdp = "" +
  38. "m=application 9 DTLS/SCTP 5000\r\n" +
  39. "c=IN IP4 0.0.0.0\r\n" +
  40. "b=AS:30\r\n" +
  41. "a=setup:passive\r\n" +
  42. "a=mid:data\r\n" +
  43. "a=ice-ufrag:adPg\r\n" +
  44. "a=ice-pwd:Xsr05Mq8S7CR44DAnusZE26F\r\n" +
  45. "a=fingerprint:sha-256 6A:39:DE:11:24:AD:2E:4E:63:D6:69:D3:85:05:53:C7:3C:38:A4:B7:91:74:C0:91:44:FC:94:63:7F:01:AB:A9\r\n" +
  46. "a=sctpmap:5000 webrtc-datachannel 1024\r\n";
  47. // A basic sdp video mline with a single stream
  48. const plainVideoMLineSdp = "" +
  49. "m=video 9 RTP/SAVPF 100\r\n" +
  50. "c=IN IP4 0.0.0.0\r\n" +
  51. "a=rtpmap:100 VP8/90000\r\n" +
  52. "a=rtcp:9 IN IP4 0.0.0.0\r\n" +
  53. "a=rtcp-fb:100 ccm fir\r\n" +
  54. "a=rtcp-fb:100 nack\r\n" +
  55. "a=rtcp-fb:100 nack pli\r\n" +
  56. "a=rtcp-fb:100 goog-remb\r\n" +
  57. "a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\n" +
  58. "a=setup:passive\r\n" +
  59. "a=mid:video\r\n" +
  60. "a=sendrecv\r\n" +
  61. "a=ice-ufrag:adPg\r\n" +
  62. "a=ice-pwd:Xsr05Mq8S7CR44DAnusZE26F\r\n" +
  63. "a=fingerprint:sha-256 6A:39:DE:11:24:AD:2E:4E:63:D6:69:D3:85:05:53:C7:3C:38:A4:B7:91:74:C0:91:44:FC:94:63:7F:01:AB:A9\r\n" +
  64. "a=ssrc:1757014965 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf\r\n" +
  65. "a=ssrc:1757014965 cname:peDGrDD6WsxUOki/\r\n" +
  66. "a=rtcp-mux\r\n";
  67. // A basic sdp video mline with a single stream and multiple codecs
  68. const multiCodecVideoMLine = "" +
  69. "m=video 9 RTP/SAVPF 100 126 97\r\n" +
  70. "c=IN IP4 0.0.0.0\r\n" +
  71. "a=rtpmap:100 VP8/90000\r\n" +
  72. "a=rtpmap:126 H264/90000\r\n" +
  73. "a=rtpmap:97 H264/90000\r\n" +
  74. "a=rtcp:9 IN IP4 0.0.0.0\r\n" +
  75. "a=rtcp-fb:100 ccm fir\r\n" +
  76. "a=rtcp-fb:100 nack\r\n" +
  77. "a=rtcp-fb:100 nack pli\r\n" +
  78. "a=rtcp-fb:100 goog-remb\r\n" +
  79. "a=fmtp:126 profile-level-id=42e01f;level-asymmetry-allowed=1;packetization-mode=1\r\n" +
  80. "a=fmtp:97 profile-level-id=42e01f;level-asymmetry-allowed=1\r\n" +
  81. "a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\n" +
  82. "a=setup:passive\r\n" +
  83. "a=mid:video\r\n" +
  84. "a=sendrecv\r\n" +
  85. "a=ice-ufrag:adPg\r\n" +
  86. "a=ice-pwd:Xsr05Mq8S7CR44DAnusZE26F\r\n" +
  87. "a=fingerprint:sha-256 6A:39:DE:11:24:AD:2E:4E:63:D6:69:D3:85:05:53:C7:3C:38:A4:B7:91:74:C0:91:44:FC:94:63:7F:01:AB:A9\r\n" +
  88. "a=ssrc:1757014965 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf\r\n" +
  89. "a=ssrc:1757014965 cname:peDGrDD6WsxUOki/\r\n" +
  90. "a=rtcp-mux\r\n";
  91. // An sdp video mline with 3 simulcast streams
  92. const simulcastVideoMLineSdp = "" +
  93. "m=video 9 RTP/SAVPF 100\r\n" +
  94. "c=IN IP4 0.0.0.0\r\n" +
  95. "a=rtpmap:100 VP8/90000\r\n" +
  96. "a=rtcp:9 IN IP4 0.0.0.0\r\n" +
  97. "a=rtcp-fb:100 ccm fir\r\n" +
  98. "a=rtcp-fb:100 nack\r\n" +
  99. "a=rtcp-fb:100 nack pli\r\n" +
  100. "a=rtcp-fb:100 goog-remb\r\n" +
  101. "a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\n" +
  102. "a=setup:passive\r\n" +
  103. "a=mid:video\r\n" +
  104. "a=sendrecv\r\n" +
  105. "a=ice-ufrag:adPg\r\n" +
  106. "a=ice-pwd:Xsr05Mq8S7CR44DAnusZE26F\r\n" +
  107. "a=fingerprint:sha-256 6A:39:DE:11:24:AD:2E:4E:63:D6:69:D3:85:05:53:C7:3C:38:A4:B7:91:74:C0:91:44:FC:94:63:7F:01:AB:A9\r\n" +
  108. "a=ssrc:1757014965 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf\r\n" +
  109. "a=ssrc:1757014965 cname:peDGrDD6WsxUOki/\r\n" +
  110. "a=ssrc:1479742055 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf\r\n" +
  111. "a=ssrc:1479742055 cname:peDGrDD6WsxUOki/\r\n" +
  112. "a=ssrc:1089111804 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf\r\n" +
  113. "a=ssrc:1089111804 cname:peDGrDD6WsxUOki/\r\n" +
  114. "a=ssrc-group:SIM 1757014965 1479742055 1089111804\r\n" +
  115. "a=rtcp-mux\r\n";
  116. // An sdp video mline with a single video stream and a
  117. // corresponding rtx stream
  118. const rtxVideoMLineSdp = "" +
  119. "m=video 9 RTP/SAVPF 100 96\r\n" +
  120. "c=IN IP4 0.0.0.0\r\n" +
  121. "a=rtpmap:100 VP8/90000\r\n" +
  122. "a=fmtp:96 apt=100\r\n" +
  123. "a=rtcp:9 IN IP4 0.0.0.0\r\n" +
  124. "a=rtcp-fb:100 ccm fir\r\n" +
  125. "a=rtcp-fb:100 nack\r\n" +
  126. "a=rtcp-fb:100 nack pli\r\n" +
  127. "a=rtcp-fb:100 goog-remb\r\n" +
  128. "a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\n" +
  129. "a=setup:passive\r\n" +
  130. "a=mid:video\r\n" +
  131. "a=sendrecv\r\n" +
  132. "a=ice-ufrag:adPg\r\n" +
  133. "a=ice-pwd:Xsr05Mq8S7CR44DAnusZE26F\r\n" +
  134. "a=fingerprint:sha-256 6A:39:DE:11:24:AD:2E:4E:63:D6:69:D3:85:05:53:C7:3C:38:A4:B7:91:74:C0:91:44:FC:94:63:7F:01:AB:A9\r\n" +
  135. "a=ssrc:1757014965 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf\r\n" +
  136. "a=ssrc:1757014965 cname:peDGrDD6WsxUOki/\r\n" +
  137. "a=ssrc:984899560 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf\r\n" +
  138. "a=ssrc:984899560 cname:peDGrDD6WsxUOki/\r\n" +
  139. "a=ssrc-group:FID 1757014965 984899560\r\n" +
  140. "a=rtcp-mux\r\n";
  141. // An sdp video mline with 3 simulcast streams and 3 rtx streams
  142. const simulcastRtxVideoMLineSdp = "" +
  143. "m=video 9 RTP/SAVPF 100 96\r\n" +
  144. "c=IN IP4 0.0.0.0\r\n" +
  145. "a=rtpmap:100 VP8/90000\r\n" +
  146. "a=fmtp:96 apt=100\r\n" +
  147. "a=rtcp:9 IN IP4 0.0.0.0\r\n" +
  148. "a=rtcp-fb:100 ccm fir\r\n" +
  149. "a=rtcp-fb:100 nack\r\n" +
  150. "a=rtcp-fb:100 nack pli\r\n" +
  151. "a=rtcp-fb:100 goog-remb\r\n" +
  152. "a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\n" +
  153. "a=setup:passive\r\n" +
  154. "a=mid:video\r\n" +
  155. "a=sendrecv\r\n" +
  156. "a=ice-ufrag:adPg\r\n" +
  157. "a=ice-pwd:Xsr05Mq8S7CR44DAnusZE26F\r\n" +
  158. "a=fingerprint:sha-256 6A:39:DE:11:24:AD:2E:4E:63:D6:69:D3:85:05:53:C7:3C:38:A4:B7:91:74:C0:91:44:FC:94:63:7F:01:AB:A9\r\n" +
  159. "a=ssrc:1757014965 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf\r\n" +
  160. "a=ssrc:1757014965 cname:peDGrDD6WsxUOki/\r\n" +
  161. "a=ssrc:1479742055 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf\r\n" +
  162. "a=ssrc:1479742055 cname:peDGrDD6WsxUOki/\r\n" +
  163. "a=ssrc:1089111804 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf\r\n" +
  164. "a=ssrc:1089111804 cname:peDGrDD6WsxUOki/\r\n" +
  165. "a=ssrc:855213044 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf\r\n" +
  166. "a=ssrc:855213044 cname:peDGrDD6WsxUOki/\r\n" +
  167. "a=ssrc:984899560 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf\r\n" +
  168. "a=ssrc:984899560 cname:peDGrDD6WsxUOki/\r\n" +
  169. "a=ssrc:2963867077 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf\r\n" +
  170. "a=ssrc:2963867077 cname:peDGrDD6WsxUOki/\r\n" +
  171. "a=ssrc-group:FID 1757014965 984899560\r\n" +
  172. "a=ssrc-group:FID 1479742055 855213044\r\n" +
  173. "a=ssrc-group:FID 1089111804 2963867077\r\n" +
  174. "a=ssrc-group:SIM 1757014965 1479742055 1089111804\r\n" +
  175. "a=rtcp-mux\r\n";
  176. // A full sdp string representing a client doing simulcast
  177. const simulcastSdpStr = baseSessionSdp + baseAudioMLineSdp + simulcastVideoMLineSdp + baseDataMLineSdp;
  178. // A full sdp string representing a client doing simulcast and rtx
  179. const simulcastRtxSdpStr = baseSessionSdp + baseAudioMLineSdp + simulcastRtxVideoMLineSdp + baseDataMLineSdp;
  180. // A full sdp string representing a client doing a single video stream
  181. const plainVideoSdpStr = baseSessionSdp + baseAudioMLineSdp + plainVideoMLineSdp + baseDataMLineSdp;
  182. // A full sdp string representing a client doing a single video stream with rtx
  183. const rtxVideoSdpStr = baseSessionSdp + baseAudioMLineSdp + rtxVideoMLineSdp + baseDataMLineSdp;
  184. // A full sdp string representing a client doing a single video stream with multiple codec options
  185. const multiCodecVideoSdpStr = baseSessionSdp + baseAudioMLineSdp + multiCodecVideoMLine + baseDataMLineSdp;
  186. export const simulcastSdp = transform.parse(simulcastSdpStr);
  187. export const simulcastRtxSdp = transform.parse(simulcastRtxSdpStr);
  188. export const plainVideoSdp = transform.parse(plainVideoSdpStr);
  189. export const rtxVideoSdp = transform.parse(rtxVideoSdpStr);
  190. export const multiCodecVideoSdp = transform.parse(multiCodecVideoSdpStr);
  191. /*eslint-enable max-len*/