V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rqxiao
V2EX  ›  FFmpeg

使用 ffmpeg 用 aes 加密 m3u8 文件的疑惑

  •  
  •   rqxiao · 99 天前 · 1790 次点击
    这是一个创建于 99 天前的主题,其中的信息可能已经有所发展或是发生改变。

    使用 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 加密不是没用了吗

    7 条回复    2024-04-16 09:59:27 +08:00
    riggzh
        1
    riggzh  
       99 天前   ❤️ 1
    目前主要的场景,m3u8 里的 key 是二次加密的,前端播放器对其进行二次解密。这样能防止一些 m3u8 下载器自动解密,扒 js 文件还是能扒出来就是
    yishanxin
        2
    yishanxin  
       99 天前   ❤️ 1
    m3u8 文件里有着秘钥,这块会换成接口动态 [权限检测] 获取 ,而且返回的密码还是加密的
    nuffin
        3
    nuffin  
       99 天前   ❤️ 1
    m3u8 里的密钥要做成动态的。换句话说,m3u8 是接口生成,而不是固定存储的某个文件。同时,请求 m3u8 接口和请求 ts 文件都需要鉴权,可以带一个会过期的 token ,这样扒下来 js ,也还得去破解登录,不然留给扒取视频的时间就很短了。这些都超出了 ffmpeg 的功能范围,它只是帮你实现视频加密,业务流程上的保证还得业务层来做。
    tool2dx
        4
    tool2dx  
       99 天前   ❤️ 1
    加密是没啥用。有些资源网站 m3u8 是一次性的,有 nonce ,第二次就获取不到了,能确保只有自己网站可以播放,没有盗链。
    wslsq
        5
    wslsq  
       99 天前
    三四楼说的对。。一般 ts 还要鉴权一遍,可以给 nginx 来做,用 secure_link_md5
    ysc3839
        6
    ysc3839  
       99 天前 via Android
    这种加密方法已经过时了,起码得用浏览器提供的各种 DRM 方案。用 DRM 方案,起码能防住一些普通的破解者,录屏是黑的,采集卡录制也得能解 HDCP 的采集卡,但是做不到 100%安全。以及浏览器 DRM 使用门槛如何(要不要付费才能用)不太明确。
    8355
        7
    8355  
       98 天前
    ts 传 token 鉴权啊。。。
    m3u8 这不是基本操作嘛
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2984 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 00:37 · PVG 08:37 · LAX 17:37 · JFK 20:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.