公司视频之前未加密,为了提高被下载的难度.我进行了 HLS 标准加密操作.
当前遇到的问题是:当一个视频如被切成了 100 个 TS,则播放时每个 TS 都会请求服务器的鉴权 url 获取 KEY.
这样就会造成对服务器端的很大压力. 是否有方法让视频播放时只请求一次 key.而不进行多次请求.
希望有相关经验的大佬指点一下.
视频已经切片后存储在阿里云OSS
原理是一样的,不过手法有小区别。
步骤如下
举例,A视频目录在 /A/index-hls.m3u8,鉴权 url可以设置成 /A/play_very.php,同理 B视频设置成 /B/play_very.php。
/A/index-hls.m3u8
/A/play_very.php
/B/play_very.php
当然你也可以用客户端的 IP 代替视频编号作区分,形如 /play_very.php?ip=1.2.3.4 , 和 /play_very.php?ip=5.6.7.8 。这样每个客户端只会请求一次鉴权 url,无论看几部视频。
/play_very.php?ip=1.2.3.4
/play_very.php?ip=5.6.7.8
首先设置多个 ts 共享一个 key,然后为 key 设置缓存策略即可。
具体步骤如下
每 10 个 ts 更新一次 key
hls_fragments_per_key 10;
设置缓存策略,5分钟过期
location /keys { etag on; expires 5m; add_header Cache-Control "public"; ... }
1.4m articles
1.4m replys
5 comments
57.0k users