【问题标题】:decrypt AES-128 encrypted .m3u8 playlist and .TS files with ffmpeg使用 ffmpeg 解密 AES-128 加密的 .m3u8 播放列表和 .TS 文件
【发布时间】:2018-05-30 08:44:13
【问题描述】:

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

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

并使用此命令解密播放列表

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 文件?我想单独解密文件

【问题讨论】:

    标签: ffmpeg streaming http-live-streaming


    【解决方案1】:

    尝试在清单中指定完整的本地路径,使 KEY 类似于​​:

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

    和 TS 块都喜欢:

    file://path/to/local/s-6-v1-a1.ts
    

    如果这不起作用,那么 ffmpeg 可能需要通过 HTTP 提供 m3u8 的输入。因此,将您的 m3u8 文件和密钥以及所有块放在某个 web 目录上,然后使用 m3u8 的 URL 重新运行您的 ffmpeg 命令,就像这样:

    ffmpeg -i http://mytestwebserver.com/playlist.m3u8 -c copy output.ts
    

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

    【讨论】:

    • 这个方法对我有用。我最终使用以下脚本 gist.github.com/grwlf/e1876f5d78cb6e66791809771d7bf36b 下载并替换所有 ts-chunk 和加密密钥及其本地路径,注意它非常依赖播放列表。
    • key 文件中是否有特定的数据格式?我得到了解密密钥,但不是来自 M3U8 文件中提供的 URI,现在我不知道如何使用该密钥!已经尝试保存sample.key 文件并将密钥放入其中,但没有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    • 2014-09-12
    • 2013-04-14
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多