在 ffmpeg 中将标头传递给加密的 hls 流

在 ffmpeg 中将标头传递给加密的 hls 流

我正在使用 ffmpeg 5.1。我想保存加密的 aes-128 hls,其中解密密钥链接位于 m3u8 流链接中。我能够传递标头并使用以下方法获取 m3u8 文件内容:

ffmpeg  -headers "Hvar1: hvalue1" -headers "Hvar2: hvalue2" -headers "Hvar3: hvalue3" -i "http://media.link/mediafile.m3u8" -t 30 -c copy output.mkv -loglevel debug

M3u8内容如下:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:582
#EXT-X-TARGETDURATION:6
#EXT-X-KEY:METHOD=AES-128,URI="https://media.key.link/live/media-1500.key",IV=0x00080
#EXTINF:5.000,
media-20.ts
#EXTINF:5.000,
media-25.ts
#EXTINF:6.000,
media-30.ts
#EXTINF:5.000,
media-35.ts
#EXTINF:5.000,
media-40.ts

-loglevel debug 显示正在传递标头以从“http://media.link/mediafile.m3u8”获取内容。但问题在于获取远程密钥文件,即https://media.key.link/live/media-1500.key因为它需要获取相同的标头,而这些相同的标头不会传递到远程密钥文件 URL。我收到此错误:

[http @ 0x01] No trailing CRLF found in HTTP header. Adding it.
[hls @ 0x01] Skip ('#EXT-X-VERSION:3')
[hls @ 0x01] Opening 'https://media.key.link/live/media-1500.key' for reading
[https @ 0x01] HTTP error 403 Forbidden
[hls @ 0x01] Unable to open key file https://media.key.link/live/media-1500.key
[hls @ 0x01] Opening 'crypto+http://media.link/media-20.ts' for reading
[hls @ 0x01] Opening 'crypto+http://media.link/media-25.ts' for reading
[hls @ 0x01] Error when loading first segment 'http://media.link/media-20.ts'
http://media.link/mediafile.m3u8: Invalid data found when processing input

我如何将标题传递给远程密钥文件 URL?

答案1

尝试一下

ffmpeg -headers "Hvar1: hvalue1\r\nHvar2: hvalue2\r\nHvar3: hvalue3\r\n" -i "http://media.link/mediafile.m3u8" -t 30 -c copy output.mkv -loglevel debug

相关内容