我有几千个带有.key和.m3u8文件的AES-128加密音频文件.
密钥文件只包含一个由44个字符组成的密钥..m3ud文件似乎是某种类型的播放列表.
#EXTM3U #EXT-X-ALLOW-CACHE:NO #EXT-X-TARGETDURATION:10 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-KEY:METHOD=AES-128,URI="http://localhost:[port]/hls/keys/nax_9781843794066.key" #EXTINF:10, http://localhost:[port]/filesequence0000000.ts #EXTINF:10, etc...
请注意,密钥URI和.ts文件的路径现在都是错误的.
环顾四周,看来ffmpeg可能适用于这种格式.但我不确定语法.
如何解密和组合这些文件?
我一直在玩修复播放列表语法,并弄清楚如何使用ffmpeg并得到.
ffmpeg -i nax_9781843794066.m3u8 -c copy output.ts ffmpeg version N-77197-gdf2ce13 Copyright (c) 2000-2015 the FFmpeg developers built with gcc 5.2.0 (GCC) configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib libavutil 55. 10.100 / 55. 10.100 libavcodec 57. 17.100 / 57. 17.100 libavformat 57. 19.100 / 57. 19.100 libavdevice 57. 0.100 / 57. 0.100 libavfilter 6. 20.100 / 6. 20.100 libswscale 4. 0.100 / 4. 0.100 libswresample 2. 0.101 / 2. 0.101 libpostproc 54. 0.100 / 54. 0.100 [hls,applehttp @ 0000003e6348a660] Error when loading first segment 'filesequence0000000.ts' nax_9781843794066.m3u8: Invalid data found when processing input
filesequence0000000.ts
是第一个文件,在同一个文件夹中.我不知道这是加密或其他什么问题.
这是关键文件,如果重要的话: MoOoNvcKlThWBm2T+VzYq9QKZLw7MFUqSyLYjiwquTQ=
最新版本的ffmpeg应该能够解密AES-128 HLS流.您不需要网络服务器.如果m3u8
URI /路径错误,您可以:
创建一个目录
将密钥复制到密钥文件,即将my.key
其放在目录中.请注意,如果播放列表有多个键,则可以旋转键,将所有键复制到不同的文件中.
将所有.ts
段复制到同一目录
复制和编辑playlist.m3u8
并仅使用密钥(URI)和段的文件名.
获取单个.ts
文件做:
ffmpeg -i playlist.m3u8 -c copy output.ts
如果你只想要没有.ts
容器的音频流,你可以提取它.例如:假设您使用AAC
编解码器运行时有一个音频流:
ffmpeg -i playlist.m3u8 -map 0:a -c copy output.aac
这将在AAC
不重新编码的情况下将流提取到文件.如果您想要一个与源不同的编解码器,则必须重新编码.
如果由于某种原因你必须使用openssl
解密段,请记住,如果没有IV
指定,那么IV
它等于段的媒体序列,即.第一段有IV=0
,第二段有IV=1
,依此类推.解密后,更新播放列表以指向解密的段并删除该EXT-X-KEY
行.如果你走这条路线你甚至不需要ffmpeg来获得单个.ts
文件,因为MPEG-TS可以直接连接,即.你可以cat
在解密的段上使用.