首页 > 编程知识 正文

m3u8合并 ,m3u8视频合并工具

时间:2023-05-05 10:40:15 阅读:279515 作者:3298

m3u8解析、ts视频块解密合并mp4 今天客户有个批量下载视频得需求、拿到链接一顿分析、发现视频是m3u8文件分块、然后有KEY加密、aes-128
下面开始处理流程: 1 先取出key链接、这里得key是需要携带token才能获取、具体token怎么获取不在本次讨论范围~.~2 下载key文件、二进制文件打开是乱码、字节保存就好3 上图最后一行*.ts***,这是个加密得视频分块、拼装好url也下载下来4 一个m3u8里面肯定会有很多ts分块得![在这里插入图片描述](https://img-blog.csdnimg.cn/20201228170550279.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poZW5namlhbnlhbmcx,size_16,color_FFFFFF,t_70)5 一般一个m3u8 用的都是统一个key、不过也要根据实际情况,这次得是用得同一个key、只需要下载一次Key文件就可以、6 把所有得 ts 视频分块全部下载下来、这里有个验证必须要带来路、headers~,记得给名字划分好、后面要用到、现在得名字全是一样得~7 把这个m3u8得格式处理一下保存下来 7.1 把所有key链接换成第 2 步得文件名 7.2 #EXT-X-KEY:METHOD=AES-128,URI="key.key",IV=0x00000000000000000000000000000000 7.3 IV不用在意、怎么加得怎么解就好了 7.4 把第 6 步所有得 *.***ts* 、ts文件替换成刚才下载所有ts文件名 比如: 1.ts 2.ts..... 7.5 保存m3u8文件后缀是m3u8 7.6 脚本处理![在这里插入图片描述](https://img-blog.csdnimg.cn/20201228170536792.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poZW5namlhbnlhbmcx,size_16,color_FFFFFF,t_70)8 上面我们就把一个视频得所有分块和解密key以及m3u8文件给保存好了、然后就是解密部分9 解密我们借助 ffmpeg 、这里我就不提供了、需要的还是大家取官网下载比较友好10 把所有ts、key、m3u8文件和 ffmpeg 放在同一个目录11 .ffmpeg.exe -allowed_extensions ALL -protocol_whitelist "file,http,crypto,tcp" -i xxx.m3u8 -c copy 1.mp412 xxx.m3u8、保存得m3u8文件名13 1.mp4、要解密、合并、生成得mp4文件名、即最终文件14 正常解码播放~安逸了15 其中还是有一些小坑得、比如token得生成啊、视频来路啊、不同站点带来得坑肯定不一样、这个还是要根据实际情况分析

这样一个视频就完整得解密合并成mp4了、客户要下载七十个视频、一个一个来?

肯定是不可能得、下面分享一部分自动话得代码、毕竟站点不一样、实际情况也不一样

自动处理下载 1 取视频id![在这里插入图片描述](https://img-blog.csdnimg.cn/20201228170657582.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poZW5namlhbnlhbmcx,size_16,color_FFFFFF,t_70) 1.1 我这里用信号量限制了并发数为1,我也不晓得ffmpeg能不能多进程、会不会出错、索性就慢慢跑、反正也不多、才几十个视频 1.2 我是把所有id全部取出来丢到了json中得、没得加密、没得验证、安逸~2 取出视频名一个一些需要得参数![在这里插入图片描述](https://img-blog.csdnimg.cn/20201228170708517.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poZW5namlhbnlhbmcx,size_16,color_FFFFFF,t_70)3 拼接 ts 文件链接得一些参数然后加入到循环策略批量下载保存并存下文件名![在这里插入图片描述](https://img-blog.csdnimg.cn/20201228170716598.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poZW5namlhbnlhbmcx,size_16,color_FFFFFF,t_70)4 整理 m3u8 得格式为上面说的格式![在这里插入图片描述](https://img-blog.csdnimg.cn/20201228170735170.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poZW5namlhbnlhbmcx,size_16,color_FFFFFF,t_70)5 解密、合并mp4视频文件![在这里插入图片描述](https://img-blog.csdnimg.cn/20201228170743371.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poZW5namlhbnlhbmcx,size_16,color_FFFFFF,t_70)6 上一步有两个 chdir 操作切换目录、第一次是为了执行ffmpeg、第二次是为了保存文件新的、防止目录错乱而出错7 加延时是为了防止文件占用、实际用不了那么久、合并视频也就一两秒、删除就更快了、以防万一得设置久一点

然后就可以安逸得等待全部下载完毕啦~

打完收工.

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。