rqxiao
V2EX  ›  FFmpeg

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

  •  
  •   rqxiao · Apr 15, 2024 · 4727 views
    This topic created in 932 days ago, the information mentioned may be changed or developed.

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