使用 ffmpeg 用 aes 加密 m3u8 文件流程
1.准备加密密钥
openssl rand 16 > enc.key
2.生成 IV
3 创建 enc.info 文件
然后利用 ffmpeg 进行加密
ffmpeg -y
-i test.mp4
-hls_time 9
-hls_key_info_file enc.info
-hls_playlist_type vod
-hls_segment_filename "index%d.ts"
playlist.m3u8
结果是播放器不能直接打 ts 文件开播放。达到了对 ts 文件加密的效果?
但是假设前端去实现播放视频的功能时,不还是要向后端获取 m3u8 文件吗,因为 m3u8 文件里有着秘钥 。只要获取到 m3u8 文件就能播放了。也就是说只要能够获取到 m3u8 文件就能播放加密的 ts 文件,那如果通过抓包工具获取到 m3u8 地址,那 ts 加密不是没用了吗
1
riggzh 247 天前 1
目前主要的场景,m3u8 里的 key 是二次加密的,前端播放器对其进行二次解密。这样能防止一些 m3u8 下载器自动解密,扒 js 文件还是能扒出来就是
|
2
yishanxin 247 天前 1
m3u8 文件里有着秘钥,这块会换成接口动态 [权限检测] 获取 ,而且返回的密码还是加密的
|
3
nuffin 247 天前 1
m3u8 里的密钥要做成动态的。换句话说,m3u8 是接口生成,而不是固定存储的某个文件。同时,请求 m3u8 接口和请求 ts 文件都需要鉴权,可以带一个会过期的 token ,这样扒下来 js ,也还得去破解登录,不然留给扒取视频的时间就很短了。这些都超出了 ffmpeg 的功能范围,它只是帮你实现视频加密,业务流程上的保证还得业务层来做。
|
4
tool2dx 247 天前 1
加密是没啥用。有些资源网站 m3u8 是一次性的,有 nonce ,第二次就获取不到了,能确保只有自己网站可以播放,没有盗链。
|
5
wslsq 246 天前
三四楼说的对。。一般 ts 还要鉴权一遍,可以给 nginx 来做,用 secure_link_md5
|
6
ysc3839 246 天前 via Android
这种加密方法已经过时了,起码得用浏览器提供的各种 DRM 方案。用 DRM 方案,起码能防住一些普通的破解者,录屏是黑的,采集卡录制也得能解 HDCP 的采集卡,但是做不到 100%安全。以及浏览器 DRM 使用门槛如何(要不要付费才能用)不太明确。
|
7
8355 246 天前
ts 传 token 鉴权啊。。。
m3u8 这不是基本操作嘛 |