ffmpeg 合并下载m3u8流媒体

m3u8 不是一个视频文件,而是一个playlist。用 sublime text 打开下载下载下来的 m3u8 文件是这样子的:

#EXTM3U

#EXT-X-VERSION:3

#EXT-X-MEDIA-SEQUENCE:0

#EXT-X-ALLOW-CACHE:YES

#EXT-X-KEY:METHOD=AES-128,URI="http://hls.videocc.net/a0713eea93/3/a0713eea93d0d017ace1c26de982c673_3.key?pid=1548059731161X1008771&ts=1548059730000&sign=859d3dbfd2f62e76b6e4ba4ed110cbca&ms=d45fbe22c7d970a99750939929f27276",IV=0xa8db2560ebdc26250e7c559e48389139

#EXT-X-TARGETDURATION:12

#EXTINF:11.120000,

http://ab-mts.videocc.net/a0713eea93/18/1512390832000/3/82/c6/73_3/a0713eea93d0d017ace1c26de982c673_3_0.ts?pid=1548059731161X1008771&ts=1548059730000&sign=d45fbe22c7d970a99750939929f27276

#EXTINF:9.960000,

http://ab-mts.videocc.net/a0713eea93/18/1512390832000/3/82/c6/73_3/a0713eea93d0d017ace1c26de982c673_3_1.ts?pid=1548059731161X1008771&ts=1548059730000&sign=d45fbe22c7d970a99750939929f27276

可以看到,视频被分成了很多段。

如果没有 #EXT-X-KEY 或是 EXT-X-KEY:METHOD=NONE,说明视频没有被加密,可以直接用命令下载

ffmpeg -protocol_whitelist "file,http,crypto,tcp" -i a0713eea93d0d017ace1c26de982c67.m3u8 1.ts

如果视频已加密,下面着重讲怎样获取解密的 key

使用 fiddler 网络抓包,找到下载 key 的请求。看 RAW 文本发现是乱码,因为 key 的内容不是可读的字符。从右侧的窗口选择 Inspectors -> HexView, 黑色的部分就是 key 的内容,以16进制显示。

选择黑色的部分,右键 -> save selected bytes 保存成文件,例如名字 a.key。后面解密将要用到。

sublime 打开 m3u8 文件,将 EXT-X-KEY 的 URI 修改成 a.key 的路径,然后执行命令

ffmpeg -allowed_extensions ALL -protocol_whitelist "file,http,crypto,tcp" -i a0713eea93d0d017ace1c26de982c67.m3u8 1.ts

开始下载视频。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值