/m3u8Download

java下载m3u8视频,解密并合并ts java download m3u8 video,decrypt & merge ts slice

Primary LanguageJava

m3u8Dowload

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);
//添加额外请求头
  /*  Map headersMap = 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。