Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
717 views
in Technique[技术] by (71.8m points)

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

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

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

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

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
视频已经切片后存储在阿里云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";
      ...
    }

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share

2.1m questions

2.1m answers

62 comments

56.6k users

...