m3u8 视频的解密,合并处理 通过java代码

前言

就是一堆废话,可以不看,文末有代码,可以直接down

通过UC下载了一些视频,觉得过于精彩,应该保存下载,不过它是m3u8格式的,

之前为了给手机刷机,资料必须得备份,于是拷贝了出来,把手机上的资料清空了,现在想把视频合并,
手机端是有一些合并软件,但是pc端没找到啊!!

总不能再拷贝回去用手机合并吧,毕竟拷贝速度挺慢的,m3u8对应的文件夹下都是一些小的文件,动不动几千个小文件,
再说,拷回去用别人搞出来的东西岂不是很没面子!!!!

于是乎,自己动手丰衣足食(ps:其实是在网上找了半天,没找到一个能用的合并工具,还被网上那些无良广告坑了不少次,下的全都是绑定广告平台的下载软件,最终一怒之下决定自己搞一个!!)

正文

研究了下m3u8的结构,自己便动手了,起初以为简单的用IO流合并一下那些文件就可以了,没有看m3u8这个文件,结果合并之后,不能播放…

看了下m3u8,才知道有加密,用的是AES-128加密,m3u8文件中有对应的key

下面的是没有加密的.m3u8文件用文本编辑器打开后的内容,可以直接通过内容的文件顺序进行合并:
在这里插入图片描述
里面的EXTINF下面那一行文件路径就是每一个分段文件的路径地址,但我是拷贝到了电脑,明显路径发生了变化,而且我看没有加密,对于此类,没什么好处理,

直接把所有文件遍历一下,根据最后都是数字结尾的规律整理了一下,排个序,用IO流把所有文件合并了一下,然后就能播放了,
在这里插入图片描述

可关键是下面这种有加密的,下图是.m3u8文件的内容,视频文件夹中的local_index.m3u8:

m3u8文件
图中圈红的就是加密,

EXT-X-KEY:METHOD=AES128,
#这个是加密方式
URI="/storage/emulated/0/UCDownloads/VideoData/1565274928110/k0"
#这个是key的位置

我下载的视频目前都是通过一个为k0的文件中的密钥和AES-128进行加密,这是UC浏览器自动为我们转换的一个m3u8文件,
我的m3u8视频文件夹中除了那些视频文件外还有以下三个文件:
在这里插入图片描述
这三个文件我打开inde.m3u8,这个文件中的描述如下:
在这里插入图片描述
local_index.m3u8的内容如下:

在这里插入图片描述

index.m3u8 里面的文件后缀为.ts,而加密文件的URI为 “key.key”,而local_index.m3u8正好描述的指向的是当前文件夹的文件和加密文件,这个应该是UC浏览器内部做的处理,我就不管了,我就按照这个local_index.m3u8 来进行操作;
文件夹中还有一个文件:
在这里插入图片描述
那个0-decrypted文件应该是示例的解密文件,这里就不管它了,

思路如下:
获取文件夹所有文件,对文件进行处理排序,文件夹中有一个k0文件,读取k0文件,获取密钥,每读取一个文件,解密,再进行合并。

以下是代码地址:
https://github.com/onlyyou112/mergeM3u8.git

  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值