平安校园
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

86 lines
3.2 KiB

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta http-equiv="x-ua-compatible" content="IE=edge">
  6. <meta name="viewport"
  7. content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
  8. <title>Aliplayer Rts Demo</title>
  9. <link rel="stylesheet"
  10. href="https://g.alicdn.com/apsara-media-box/imp-web-player/2.16.3/skins/default/aliplayer-min.css" />
  11. <script type="text/javascript" charset="utf-8"
  12. src="https://g.alicdn.com/apsara-media-box/imp-web-player/2.16.3/aliplayer-min.js"></script>
  13. </head>
  14. <body style="margin: 0;">
  15. <div class="prism-player" id="player-con"></div>
  16. <script>
  17. // 使用: /static/rtsPlayer.html?rtsUrl=
  18. /**
  19. * 播放器默认播放 source 提供的 rts 拉流地址,如果失败,则会自动降级至 rtsFallbackSource 提供的拉流地址(如 HLS 地址)。
  20. * 可能的降级场景包括:
  21. * 1. 浏览器不支持 RTS,直接降级
  22. * 2. RTS 信令请求失败(拉流地址无效、https配置无效、RTS配置无效等),直接降级
  23. * 3. RTS 起播超时或中途断流,按自定义策略重试失败后降级
  24. **/
  25. // 更多播放器配置请参考 https://player.alicdn.com/aliplayer/index.html
  26. let rtsUrl = getUrlParams(location.href)['rtsUrl'] || ''
  27. var options = {
  28. "id": "player-con",
  29. "source": rtsUrl,
  30. "rtsFallbackSource": "降级地址,如HLS",
  31. "width": "100%",
  32. "height": "500px",
  33. "autoplay": true,
  34. "isLive": true,
  35. "playsinline": true,
  36. "skipRtsSupportCheck": false, // 对于不在 https://help.aliyun.com/document_detail/397569.html 中的浏览器,可以传 true 跳过检查,强制使用 RTS(有风险,需要自测保证)
  37. /**
  38. * RTS 拉流超时会默认重试
  39. * 以下两个参数用来控制降级之前的重试策略,比如 3000 毫秒超时,重试一次,如果再拉不到流就降级,那么总共等待 6000 毫秒降级
  40. **/
  41. // RTS 多久拉不到流会重试,默认 3000 ms
  42. // rtsLoadDataTimeout: 2000,
  43. // RTS 拉不到流重试的次数,默认 5,此参数建议设为 1,即重试 1 次后降级,可以减少降级等待时间
  44. liveRetry: 1,
  45. };
  46. var player = new Aliplayer(options, function () {/* player ready */ });
  47. // 降级时会触发此事件
  48. player.on('rtsFallback', function (event) {
  49. console.log('[EVENT]rtsFallback', event.paramData);
  50. // event.paramData.reason 降级的原因
  51. // event.paramData.fallbackUrl 降级到的地址
  52. })
  53. player.on('error', function (event) {
  54. console.log('[EVENT]error', event.paramData);
  55. })
  56. // 当RTS拉流成功时触发,通过订阅该事件,可以获取到RTS TraceId
  57. player.on('rtsTraceId', function (data) {
  58. console.log('[EVENT]rtsTraceId', data.paramData);
  59. // event.paramData.traceId 拉流的TraceId
  60. // event.paramData.source 当前RTS流的播放地址
  61. })
  62. function getUrlParams(url) {
  63. const reg = /(\w+)=([^&]+)/g;
  64. const params = {};
  65. let match;
  66. while ((match = reg.exec(url)) !== null) {
  67. params[match[1]] = match[2];
  68. }
  69. return params;
  70. }
  71. </script>
  72. </body>