解密 .m3u8 播放列表并使用 ffmpeg 将其合并为单个 .mp4 文件

解密 .m3u8 播放列表并使用 ffmpeg 将其合并为单个 .mp4 文件

我有一个文件夹,其中包含.key文件、.m3u8文件和一堆.ts文件。

我的.m3u8样子是这样的:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:5
#EXT-X-KEY:METHOD=AES-128,URI="mykey.key"
#EXTINF:4.004000,
000000.ts
#EXTINF:4.004011,
000001.ts
#EXTINF:4.004000,
000002.ts
#EXTINF:4.004000,
000003.ts

...

#EXT-X-ENDLIST

我想要做的是解密它并将这个播放列表合并为一个 .mp4 文件

我在 Windows 机器上尝试了这个 ffmpeg 命令:

ffmpeg -i "myvid.m3u8" -codec copy output.mp4

但我收到以下错误:

[hls @ 000002780f0a8dc0] Skip ('#EXT-X-VERSION:3')
[hls @ 000002780f0a8dc0] Filename extension of 'mykey.key' is not a common multimedia extension, blocked for security reasons.
If you wish to override this adjust allowed_extensions, you can set it to 'ALL' to allow all
[hls @ 000002780f0a8dc0] Unable to open key file mykey.key
[hls @ 000002780f0a8dc0] Opening 'crypto:000000.ts' for reading
[hls @ 000002780f0a8dc0] Opening 'crypto:000001.ts' for reading
[hls @ 000002780f0a8dc0] Error when loading first segment '000000.ts'
myvid.m3u8: Invalid data found when processing input

我将命令更改为以下内容:

ffmpeg  -allowed_extensions ALL -i "myvid.m3u8" -codec copy output.mp4

然后我收到这个错误:

[hls @ 000001a079cf8f80] Skip ('#EXT-X-VERSION:3')
[hls @ 000001a079cf8f80] Opening 'mykey.key' for reading
[hls @ 000001a079cf8f80] Opening 'crypto:000000.ts' for reading
[hls @ 000001a079cf8f80] Opening 'crypto:000001.ts' for reading
[hls @ 000001a079cf8f80] Error when loading first segment '000000.ts'
myvid.m3u8: Invalid data found when processing input

如果我.key用文本编辑器打开文件,它会显示奇怪的符号,Ж‰еН:‘њ w†(„ым;§BgШ 0чqо!I”q 我不知道它是否应该是这样的

目前我还不太明白问题出在哪里。有什么办法可以解决这个问题吗?

如果 ffmpeg 或 smth 无法做到这一点,我愿意使用任何其他软件

谢谢!

答案1

尝试使用这个 ffmpeg -protocol_whitelist file,tls,tcp,https,crypto -allowed_extensions ALL -i myvid.m3u8 -c copy output.mp4

如果我用文本编辑器打开我的 .key 文件,它会显示奇怪的符号,如 Ж‰еН:'њ w†(“ым;§BgШ0чqо!I”q 我不知道它是否应该是这样的

是的,它应该是那样的。

相关内容