1.m3u8的文件
#EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:13 #EXT-X-MEDIA-SEQUENCE:0 //这里是注释,真实文件里不会有的, //看看你的m3u8文件里有没有这一行,如果有的话,那么恭喜你这个m3u8文件是加密的,请继续往下看 //如果没有这行的话,特别是没有这个#EXT-X-KEY,那么同样恭喜你,这个m3u8没有加密,你直接百度vlc下载合并就行,也可根据本文章进行合并 #EXT-X-KEY:METHOD=AES-128,URI="http://www.example.com/20180125/key.key" #EXTINF:12.5, //下面的这个其实才是视频真正的地址,你放在浏览器地址栏上直接回车是可以直接下载的 //不过这样的链接在m3u8文件里会有很多,建议使用工具下载(迅雷)、ffmpeg、vlc等 //这里还可能出现GBDYO3576000.ts这种情况,其实是把前面的路径省略了,可根据m3u8文件的路径自行加上 http://www.example.com/20180125/GBDYO3576000.ts #EXTINF:12.5, http://www.example.com/20180125/GBDYO3576001.ts #EXTINF:12.5, http://www.example.com/20180125/GBDYO3576002.ts
2.解密前准备
若文件是加密的,则需要一个key文件,下载方法与m3u8文件类似,把m3u8.m3u8换成key.key就能下载了。将下载好的所有的ts文件、m3u8.m3u8、key.key放到一个文件夹中,将m3u8.m3u8改名为index.m3u8(习惯),将key.key改名为key.m3u8。重新编辑index.m3u8内容(也就是之前的m3u8.m3u8),将URI改为你本地路径的key文件,将所有ts也改为本地的路径,样例如下:
#EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:13 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-KEY:METHOD=AES-128,URI="e:/20180125/key.m3u8" #EXTINF:12.5, e:/20180125/GBDYO3576000.ts #EXTINF:12.5, e:/20180125/GBDYO3576001.ts #EXTINF:12.5, e:/20180125/GBDYO3576002.ts
3.ffmpeg解密并合并
ffmpeg,下载Static的版本即可,然后配置环境变量Path,在Path后面直接添加你ffmpeg的安装目录加上/bin就可以了,安装完成之后重启一下,重启之后打开你index.m3u8所在的目录执行:
ffmpeg -allowed_extensions ALL -i index.m3u8 -c copy out.mp4
如果报错了执行:
ffmpeg -allowed_extensions ALL -protocol_whitelist "file,http,crypto,tcp" -i index.m3u8 -c copy out.mp4
如果这里报错了,那么打开你的index.m3u8文件,修改URI的路径为网络路径(你下载时的路径),然后执行:
ffmpeg -protocol_whitelist "file,http,crypto,tcp" -i index.m3u8 -c copy out.ts
4.失败原因
若执行上述命令反复报错,有可能是软件版本问题。