网络视频m3u8解密及ts文件合并

Posted fieldtianye

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络视频m3u8解密及ts文件合并相关的知识,希望对你有一定的参考价值。

网络视频m3u8解密及ts文件合并

参考了两篇博客:

https://blog.csdn.net/weixin_41624645/article/details/95939510

https://blog.csdn.net/u014484783/article/details/79350392

 

再加上了自己的办法写的更详细了一点:

直接用ffmpeg下载是排队逐个下载,嫌慢就写了个脚本多线程下载能快一些,,然后用ffmpeg合并ts文件。

 

 

进入chrome开发者模式,然后Network选项卡,如果文件已经加载就刷新下页面,可以看到以下文件列表:

技术图片

 

 

需要下载两个文件:.m3u8文件和.key文件

一般名称为:index.m3u8、key.key

 

技术图片

 

.ts文件就是视频文件。

 index.m3u8有两个同名文件,都下载下来看看哪个文件有下面的信息就用那个,把没用的删除了,剩下的名称改为 index.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

如果你的文件是加密的,那么你还需要一个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

接下来还需要下载一款工具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

 

 

 

 

如果所有ts文件下载下来了,就用这个吧:

ffmpeg -allowed_extensions ALL -protocol_whitelist "file,http,crypto,tcp" -i index.m3u8 -c copy out.mp4

 

 

 

 

 

以上是关于网络视频m3u8解密及ts文件合并的主要内容,如果未能解决你的问题,请参考以下文章

解码M3U8在线流视频AES-128解密TS合并到MP4

如何合并m3u8及ts文件

ts文件、m3u8文件 key文件

网页视频经过m3u8 技术切片且加密的TS文件在播放时有缓存文件,但提取出来就无法播放了,这种情况

Python3 根据m3u8下载视频,批量下载ts文件并且合并

m3u8视频爬虫下载及合并