ffmpeg - 使用 ffmpeg 解密 AES-128 加密的 .m3u8 播放列表和 .TS 文件

标签 ffmpeg streaming http-live-streaming

我正在尝试解密 .m3u8播放列表,我按照以下步骤操作:

  • 创建目录
  • 将 key 复制到 key 文件中,即my.key , 并将其放在目录中。笔记
    该键可以旋转,如果播放列表有多个键复制所有
    其中不同的文件。
  • 全部复制.ts段到同一个目录
  • 复制和编辑 playlist.m3u8并仅使用文件名
    键 URI(s) 和段。

  • 并使用此命令解密播放列表
    ffmpeg -i playlist.m3u8 -c copy output.ts
    

    但我收到此错误:Invalid data found when processing input
    这是我的 m3u8 :
    #EXTM3U
    #EXT-X-TARGETDURATION:12
    #EXT-X-ALLOW-CACHE:YES
    #EXT-X-PLAYLIST-TYPE:VOD
    #EXT-X-KEY:METHOD=AES-128,URI="my.key"
    #EXT-X-VERSION:3
    #EXT-X-MEDIA-SEQUENCE:1
    #EXTINF:6.000,
    s-1-v1-a1.ts
    #EXTINF:6.000,
    s-2-v1-a1.ts
    #EXTINF:6.000,
    s-3-v1-a1.ts
    #EXTINF:12.000,
    s-4-v1-a1.ts
    #EXTINF:12.000,
    s-5-v1-a1.ts
    #EXTINF:6.000,
    s-6-v1-a1.ts
    #EXT-X-ENDLIST
    
  • 我的命令有什么问题?
  • 如何不将播放列表转换为一个 .TS文件?我想单独解密文件
  • 最佳答案

    尝试在 list 中指定完整的本地路径,使 KEY 像:

    #EXT-X-KEY:METHOD=AES-128,URI="file://path/to/local/my.key"
    

    和 TS block 都喜欢:
    file://path/to/local/s-6-v1-a1.ts
    

    如果这不起作用,那么 ffmpeg 可能需要通过 HTTP 提供 m3u8 的输入。因此,将您的 m3u8 文件和 key 以及所有 block 放在某个 web 目录上,然后使用 m3u8 的 URL 重新运行您的 ffmpeg 命令,这样它会像:
    ffmpeg -i http://mytestwebserver.com/playlist.m3u8 -c copy output.ts
    

    如果您无法访问网络服务器,您可以安装一些本地和免费的,例如 MAMP。当输入是 HLS URL 时,使用上述命令在本地复制 HLS 流没有问题。

    关于ffmpeg - 使用 ffmpeg 解密 AES-128 加密的 .m3u8 播放列表和 .TS 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47844205/

    相关文章:

    ffmpeg - 将 hls 文件剪切成许多小的 ".ts"文件或保留一个大的 ".ts"文件。哪个更好?

    使用 HTML 5 的视频流

    video-streaming - 跨大多数浏览器和设备一致的自适应流媒体策略

    ruby-on-rails - 用于视频上传的 Heroku ffmpeg 构建包

    python - Matplotlib - 为什么我保存的动画视频是空白的?

    audio - 使用 FFMPEG 对视频进行音量调整和 channel 合并

    java - servlet + 视频流 + ClientAbortException

    WCF REST 流式传输保持事件连接

    ffmpeg - 使用 FFMPEG 从 H264 制作 HLS 剪辑

    authentication - 从需要使用 ffmpeg 登录的网站下载