openssl aes-128-cbc -d -in 原.ts -out 解密后.ts -nosalt -iv 偏移量 -K key16进制
其中 iv 偏移量和 key 通常都会在 m3u8
中。 key要按地址下载下来, iv偏移量是可选的,若是m3u8里没有iv,iv能够随便设置为0。还能够直接使用 ffmpeg 直接合并文件。
github
五,对于加密的m3u8文件:
m3u8视频另外一种下载方式
如上图中用ts连接直接下载下来的ts视频文件是加密的(为何要下加密的?虽然加密可是下载速度快啊)。浏览器
#EXT-X-KEY 字段已经写明了加密方式是AES-128,key经过URI获取,IV也有。markdown
那怎么解密呢?
1.复制URI地址到网页,你将秒速自动下载获得一个16字节文件
2.打开终端,打开该文件查看16进制:多线程
六,获取key值:
下载m3u8里的key文件,下载winhex.exe应用程序,安装以后,把key文件拖入winhex里,自动生成16进制。函数
七,合成下载好的.ts文件:post
左下角点击运行:cmd网站
copy /b 文件所在盘:\子文件\*.ts 储存的文件夹:\子文件\new.ts
把上边的汉字换成盘符和文件所在的文件夹。
注意:合并ts文件时,若是ts文件超过1000,排序就会有问题,会出现,121,1210,1211.。。。。。122,1220,1221,1222.。。。。。
这里分为几个部分,按批次合并。
八,合成一个ts文件以后还不能打开,由于ts是加密的。
这里,没有iv值,用0代替。这样解密以后的ts文件便可播放。
九,注:ts文件的顺序必须是有序的,不可缺乏的。
参考网址:简书:https://www.jianshu.com/p/1b0adcc7b426
全部的ts转MP4,新建文本文档,ren *.mp4 *.ts,修改后缀.bat,运行便可。
key值文件下载以下图:(需转16进制数)
十,关于报错
hex string is too short, padding with zero bytes to length
bad decrypt
25916:error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length:crypto\evp\evp_enc.c:559:
解决方法:
# 遍历文件夹进行解密(执行cmd命令,必定查看当前路径问题) import os for root, dirs, files in os.walk("E://BaiduNetdiskDownload//123//1",topdown=False): print(len(files)) os.system("cd 1") os.system("cd") for f in files: print(f) # os.system("openssl aes-128-cbc -d -in 7udG3475000.ts -out ./11/7udG3475000.ts -iv 00000000000000000000000000000000 -K 65323739393530323866636362626661"%(f,f)) os.system("openssl aes-128-cbc -d -in ./1/%s -out ./1/11/%s -iv 00000000000000000000000000000000 -K 65323739393530323866636362626661"%(f,f))
先解密,再合并为一个文件。先把一个个小的ts文件解密,以后再进行合并为大的ts,最后再改格式为MP4,这种比较好,视频播放不会出现卡顿,若是是先合并再解密,断点播放会出现卡顿现象。