关于 HLS 视频播放鉴权,每条 TS 均请求解密 KEY,造成的服务器压力求解.

新手上路,请多包涵

公司视频之前未加密,为了提高被下载的难度.我进行了 HLS 标准加密操作.

当前遇到的问题是:当一个视频如被切成了 100 个 TS,则播放时每个 TS 都会请求服务器的鉴权 url 获取 KEY.

这样就会造成对服务器端的很大压力. 是否有方法让视频播放时只请求一次 key.而不进行多次请求.

希望有相关经验的大佬指点一下.
image

阅读 5.8k
1 个回答
视频已经切片后存储在阿里云OSS

原理是一样的,不过手法有小区别。

步骤如下

  1. 动态生成 m3u8 中的鉴权 url,要求可以区分不同视频源。
  2. 鉴权 url设置缓存策略。

举例,A视频目录在 /A/index-hls.m3u8鉴权 url可以设置成 /A/play_very.php,同理 B视频设置成 /B/play_very.php

当然你也可以用客户端的 IP 代替视频编号作区分,形如 /play_very.php?ip=1.2.3.4 , 和 /play_very.php?ip=5.6.7.8 。这样每个客户端只会请求一次鉴权 url,无论看几部视频。


首先设置多个 ts 共享一个 key,然后为 key 设置缓存策略即可。

具体步骤如下

  1. 每 10 个 ts 更新一次 key

    hls_fragments_per_key 10;
  2. 设置缓存策略,5分钟过期

    location /keys {
      etag on;
      expires 5m;
      add_header Cache-Control "public";
      ...
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题