java 下载 m3u8 视频,解密并合并 ts
m3u8 链接获取方式以及代码分析请参见:
https://blog.csdn.net/qq494257084/article/details/103551293
准备
JDK:1.8
开发环境:IntelliJ IDEA
用于解密的 jar 包:bcprov-jdk16-139.jar
了解一些 m3u8 标签作用
https://www.cnblogs.com/shakin/p/3870442.html
使用方法
M3u8DownloadFactory.M3u8Download m3u8Download = M3u8DownloadFactory.getInstance(M3U8URL);
//设置生成目录
m3u8Download.setDir("F://m3u8JavaTest");
//设置视频名称
m3u8Download.setFileName("test");
//设置线程数
m3u8Download.setThreadCount(100);
//设置重试次数
m3u8Download.setRetryCount(100);
//设置连接超时时间(单位:毫秒)
m3u8Download.setTimeoutMillisecond(10000L);
//添加额外请求头
/MapheadersMap = new HashMap<>();
headersMap.put("Content-Type", "text/html;charset=utf-8");
m3u8Download.addRequestHeaderMap(headersMap);/
//设置日志级别
//可选值:NONE INFO DEBUG ERROR
m3u8Download.setLogLevel(Constant.DEBUG);
//设置监听器间隔(单位:毫秒)
m3u8Download.setInterval(500L);
//添加监听器
m3u8Download.addListener(new DownloadListener() {
@Override
public void start() {
System.out.println("开始下载!");
}
@Override
public void process(String downloadUrl, int finished, int sum, float percent) {
System.out.println("下载网址:" + downloadUrl + "\t 已下载" + finished + "个\t 一共" + sum + "个\t 已完成" + percent + "%");
}
@Override
public void speed(String speedPerSecond) {
System.out.println("下载速度:"+speedPerSecond);
}
@Override
public void end() {
System.out.println("下载完毕");
}
});
//开始下载
m3u8Download.start();
更新日志
2020.05.22
解决获取链接问题
2020.04.01
解决链接转换问题
添加自定义请求头功能
2020.02.10
解决日志级别为 NONE 模式下无法合并文件的问题
2020.01.14
增加进度监听功能
2020.01.08
优化内存占用率
2019.12.24
进制转换问题
2019.12.23
文件路径优化
解决新合并的文件会把以前的删除的问题
2019.12.21
修复 key 获取错误
更新使用说明
解决内存占用过多
解决链接获取错误
增加 IV 向量偏移解密
解决合并文件后程序并没有退出
提示
如果遇到了问题,请发邮件至 ts_liyaling@qq.com。