m3u8及TS文件下载解密:用FFmpeg解密合并m3u8中ts文件(三)
使用ffmpeg命令时遇到的一些奇怪问题
数据错误
[crypto @ 000000000054de40] Unable to open resource: D:\temp\vd201906291\O7rSBp5
l5847008.ts
[hls,applehttp @ 0000000000532c40] Failed to open segment 8 of playlist 0
[hls,applehttp @ 0000000000532c40] Error when loading first segment ‘D:\temp\vd2
01906291\O7rSBp5l5847000.ts’
D:\temp\vd201906291\tsmaster.m3u8: Invalid data found when processing input
最主要的原因就是因为m3u8中本地文件的路径写错了啦,所以会提示无效数据。正确的路径写法见上一篇文章。如果还是这个提示,就请检查一下这些文件是不是都存在啦。
程序处理路径时出现的错误
因为TS文件太多了,不可能一个个去修改下载下来的ts文件名称成本地路径,于是用程序处理。
刚开始发现下载的m3u8文件是这样的
于是替换成D:\temp\vd201906291\xxxxx.ts。结果还是报错,无效数据。
这个时候还没搞懂本地文件的具体路径,于是观察别人的m3u8文件,发现每个ts文件必须是单独一行
于是,在对下载下来的m3u8文件进行ts文件名替换时,加上了自动换行符,结果还是不行。。。。。
终于想起来了要用ultraedit看。
才发现原来从网站下下载下来的m3u8文件里面已经是带换行的,每个ts文件自成一行。再进行替换,发现就可以了。
最终,就知道了m3u8文件的写法,除了本地文件的格式要求外:
1、每个ts文件名必须是单独的一行
2、下载下来的m3u8文件一般是带换行符的,所以不要用记事本看,要用其他工具看,才能看到是不是有换行。
小失误
自动生成m3u8文件时,从网上拷贝了一些格式代码,比如#EXT-X-ENDLIST
拷贝时,发现 # 跟 EXT-X-ENDLIST 之间有个空格,想着应该没问题。于是,执行ts解密时发现ffmpeg命令卡死了:
必须按ctrl+c才能终止。去掉 # EXT-X-ENDLIST中的空格就好了。于是知道了:
1、m3u8中的关键字跟#号之间不能有空格,否则不会识别到
2、m3u8中不带#EXT-X-ENDLIST的话就是直播流,会一直处理。
TSmaster工具
TSMatser是一个m3u8及TS文件、CKplayer视频文件下载解密工具。
csdn 下载:https://download.csdn.net/download/cquptvlry/11262603
百度网盘: https://pan.baidu.com/s/17AdvQjoD0i_oiYKwcxZoGQ 提取码 r987
百度网盘: https://pan.baidu.com/s/1XGTaS6UvEnzQtna5aoECZA 提取码 it7t
目前,TSMaster开发过程中的一些要点基本都写完了:
1、自动嗅探视频播放地址,找到m3u8文件,分析其中的key文件和ts文件。对于动态变量的情况还有待下一步改进,以更智能地获取m3u8地址;
2、key文件和ts文件下载。调用了aria2c,通过多线程方式下载。目前是3线程,可以改的更多;
3、ts文件解密。指定目录后,自动基于下载的key和ts文件,生成本地文件格式的m3u8文件,调用ffmpeg,对m3u8文件进行处理。目前常见的AES-128加密都能完美处理了。还没遇到IV等其他特殊情况。如果遇到了再来改吧。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
