播放直播时向每个 m3u8 和 ts 文件附加参数

2023-12-13

我在直播环境中使用 videojs 并使用 nginx 安全 URL 来保护流。详情请看这里——https://www.nginx.com/blog/secure-urls-secure-link-module-nginx-plus/

该算法运行良好,播放器能够检测 live.m3u8 文件何时可用。然而,当播放流时,我只是得到一个旋转的轮子。在 JS 控制台上,我看到子播放列表,例如live_109.m3u8 URL 没有所需的 md5 哈希值和过期时间戳,因此 nginx 返回 403。

流 URL 格式为 -

https://example.com/video/live.m3u8?md5=xznbbmbbbbbxncb&expire=123456788

当我播放流时,控制台提示播放器现在正在尝试调用

https://example.com/video/live_109.m3u8

由于没有 md5 和过期参数,nginx 将发送 403,我明白了。

Adding ?md5=xznbbmbbbbbxncb&expire=123456788也可以与 live_109.m3u8 完美配合。

我确信各个段(.ts 文件)也会出现同样的问题

我的问题是我该如何附加?md5=xznbbmbbbbbxncb&expire=123456788到从页面调用的每个 .m3u8 和 .ts 文件。


我自己找到了答案。以下代码片段展示了如何在以下帮助下做到这一点http 流媒体库videojs 的 -

<script src="https://unpkg.com/@videojs/[email protected]/dist/videojs-http-streaming.js"></script>

<video id="my_video_1" class="video-js vjs-default-skin" controls preload="auto" width="640" height="268" 
  data-setup='{}'>
  </video>

  <script>
    videojs.Hls.xhr.beforeRequest = function(options){
      options.uri = options.uri+'/liveout/?md5=_PwgAm2z_kO8FgmWRWXvhQ&expires=1574698730';
      //.replace('cloudfront.net', 'foo.com');
      console.log(options);
      return options;
    };
    var player=videojs('my_video_1');
    player.ready(function() {
      this.src({
        src: 'https://d2zihajmogu5jn.cloudfront.net/bipbop-advanced/bipbop_16x9_variant.m3u8',
        type: 'application/x-mpegURL'
      });

    });    
  </script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

播放直播时向每个 m3u8 和 ts 文件附加参数 的相关文章

随机推荐