Closed flying-whale closed 1 year ago
经测试,此m3u8的 key 无法直接下载, 服务端返回给出了400错误, m3u8d 和 m3u8-downloader 发出了相同的请求,收到了相同的回复
ffmpeg -i https://hls.videocc.net/0568d5c6f7/b/0568d5c6f7d2f2446fd016519f91ca4b_3.m3u8 1.mp4
[hls @ 00000044d8e0bac0] Skip ('#EXT-X-VERSION:3')
[hls @ 00000044d8e0bac0] Skip ('#EXT-X-ALLOW-CACHE:YES')
[hls @ 00000044d8e0bac0] Opening 'https://hls.videocc.net/0568d5c6f7/b/0568d5c6f7d2f2446fd016519f91ca4b_3.key' for reading
[https @ 00000044d8edea80] HTTP error 400 Bad Request
[hls @ 00000044d8e0bac0] Unable to open key file https://hls.videocc.net/0568d5c6f7/b/0568d5c6f7d2f2446fd016519f91ca4b_3.key
[hls @ 00000044d8e0bac0] Opening 'crypto+https://hw-mts.videocc.net/0568d5c6f7/0/1654508870102/b/91/ca/4b_3/0568d5c6f7d2f2446fd016519f91ca4b_3_0.ts' for reading
猜测是Referer需要特殊设置,建议给一下原视频播放地址,我分析一下
经测试,此m3u8的 key 无法直接下载, 服务端返回给出了400错误, m3u8d 和 m3u8-downloader 发出了相同的请求,收到了相同的回复
- m3u8d 会在产生 400 报错后认为流程错误,退出了
- llychao/m3u8-downloader 直接忽略了错误, 这是一个bug
- ffmpeg 命令行可以验证, 此m3u8的key无法读取:
ffmpeg -i https://hls.videocc.net/0568d5c6f7/b/0568d5c6f7d2f2446fd016519f91ca4b_3.m3u8 1.mp4 [hls @ 00000044d8e0bac0] Skip ('#EXT-X-VERSION:3') [hls @ 00000044d8e0bac0] Skip ('#EXT-X-ALLOW-CACHE:YES') [hls @ 00000044d8e0bac0] Opening 'https://hls.videocc.net/0568d5c6f7/b/0568d5c6f7d2f2446fd016519f91ca4b_3.key' for reading [https @ 00000044d8edea80] HTTP error 400 Bad Request [hls @ 00000044d8e0bac0] Unable to open key file https://hls.videocc.net/0568d5c6f7/b/0568d5c6f7d2f2446fd016519f91ca4b_3.key [hls @ 00000044d8e0bac0] Opening 'crypto+https://hw-mts.videocc.net/0568d5c6f7/0/1654508870102/b/91/ca/4b_3/0568d5c6f7d2f2446fd016519f91ca4b_3_0.ts' for reading
猜测是Referer需要特殊设置,建议给一下原视频播放地址,我分析一下
既然说到Referer了,在文档中好像没有看到支持自定义请求头的功能
既然说到Referer了,在文档中好像没有看到支持自定义请求头的功能
@holll 可以使用curl模式, 将 Referer 的值使用-H参数传入
curl "http://192.168.23.128:1234/index.m3u8" \
-H 'Referer: www.baidu.com'
原网页是需要账号登录并购买才能加载对应的视频,经过网页请求抓包发现加载key的请求是拼接了参数token的,这个token每个视频还不一样,使用llychao/m3u8-downloader下载的ts文件实际上是未使用key解密的,无法正常读取和转码。所以不是你的程序的问题。我自己写个脚本在抓取m3u8链接的同时抓取key保存到本地解码用吧。
@flying-whale 登陆信息是储存在Cookie里的,可以在下载m3u8的时候使用curl模式传入cookie的值试试
使用m3u8d_qt_windows_386-v1.17.3.exe 下载 https://hls.videocc.net/0568d5c6f7/b/0568d5c6f7d2f2446fd016519f91ca4b_3.m3u8 的时候提示: 下载错误 getEncryptInfo:resp.Status:400 BadRequest https://hls.videocc.net/0568d5c6f7/b/0568d5c6f7d2f2446fd016519f91ca4b_3.key 直接使用 llychao/m3u8-downloader的话下载ts文件没问题