qq494257084 / m3u8download Goto Github PK
View Code? Open in Web Editor NEWjava下载m3u8视频,解密并合并ts java download m3u8 video,decrypt & merge ts slice
Home Page: https://github.com/qq494257084/m3u8Download
java下载m3u8视频,解密并合并ts java download m3u8 video,decrypt & merge ts slice
Home Page: https://github.com/qq494257084/m3u8Download
https://videozmcdn.stz8.com:8091/20191127/PK7a0LKQ/index.m3u8
你好,测试代码的这个地址,合并成 mp4文件,无法打开,会是什么原因呢?
这是获取密钥的地址,我看原页面也没有访问这个地址,所以就注释掉了。
threadCount is set repeatedly in M3u8DownloadFactory.M3u8Download.start()
移动端直接使用就可以是吧,我这边总是提示连接超时
当我尝试循环调用的时候 出现了错误信息
下载网址:********* 已下载73个 一共34个 已完成214.71%
` public static void M3u8DownLoad(String m3U8URL,String path,String videoName){
M3u8DownloadFactory.M3u8Download m3u8Download = M3u8DownloadFactory.getInstance(m3U8URL);
//设置生成目录
m3u8Download.setDir(path);
//设置视频名称
m3u8Download.setFileName(videoName);
//设置线程数
m3u8Download.setThreadCount(100);
//设置重试次数
m3u8Download.setRetryCount(100);
//设置连接超时时间(单位:毫秒)
m3u8Download.setTimeoutMillisecond(10000L);
/*
设置日志级别
可选值:NONE INFO DEBUG ERROR
/
m3u8Download.setLogLevel(Constant.INFO);
//设置监听器间隔(单位:毫秒)
m3u8Download.setInterval(500L);
//添加额外请求头
/ Map<String, Object> headersMap = new HashMap<>();
headersMap.put("Content-Type", "text/html;charset=utf-8");
m3u8Download.addRequestHeaderMap(headersMap);*/
//添加监听器
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();
}`
你好 是否能加一个下载后不合并ts的方法呢
String relativeUrl = DOWNLOADURL.substring(0, DOWNLOADURL.lastIndexOf("/") + 1);
这里应该是
String relativeUrl = Https://或者http://+new Url(DOWNLOADURL).getDomain();
//m3u8链接
https://xyz.shhs.efaa/addasd/dfhj/asd.m3u8
//ts路劲
/addasd/dfhj/xyz/1.ts
上面这个情况就会导致读取不到key文件或者ts文件
最终出来的链接是错的
How to download a video with request headers? Is there a way to headers for download request?
当发送合并的视频到微信,合并完成的视频无法直接预览
参考如下代码:
` downloadVideoButton.addActionListener(new ActionListener() {
@OverRide
public void actionPerformed(ActionEvent actionEvent) {
int index = list.getSelectedIndex();
String name = nameList.get(index);
String html = "https://" + nameListURL.get(index);
System.out.println(html);
String html1 = GetContent.getHtml(html);
String videoUrl = GetContent.getVideoUrl(html1);
System.out.println(videoUrl);
File file = new File(name);
if (!file.exists()) {
file.mkdir();
}
String filePath = file.getAbsolutePath();
M3u8DownloadFactory.M3u8Download m3u8Download = M3u8DownloadFactory.getInstance(videoUrl);
m3u8Download.setDir(filePath);
m3u8Download.setFileName(name);
m3u8Download.setThreadCount(100);
m3u8Download.setRetryCount(20);
m3u8Download.setTimeoutMillisecond(10000L);
m3u8Download.setLogLevel(Constant.DEBUG);
m3u8Download.setInterval(500L);
m3u8Download.addListener(new DownloadListener() {
@Override
public void start() {
System.out.println("开始下载!");
progressBar.setValue(0);
}
@Override
public void process(String downloadUrl, int finished, int sum, float percent) {
System.out.println("下载网址:" + downloadUrl + "\t已下载" + finished + "个\t一共" + sum + "个\t已完成" + percent + "%");
progressBar.setValue((int) percent);
}
@Override
public void speed(String speedPerSecond) {
System.out.println("下载速度:" + speedPerSecond);
}
@Override
public void end() {
System.out.println("下载完毕");
progressBar.setString("Video download completed!");
}
});
m3u8Download.start();
}
});`
改变 list 的值,每次点击 downloadVideoButton 应该产生不同的 videoUrl , 但是每次下载都是第一个 videoUrl (软件不关闭情况下)。
后来看到了 工厂类的 getInstance() 方法:
public static M3u8Download getInstance(String downloadUrl) { if (m3u8Download == null) { synchronized (M3u8Download.class) { if (m3u8Download == null) m3u8Download = new M3u8Download(downloadUrl); } } return m3u8Download; }
当第二次点击 downloadVideoButton 时,m3u8Download 不为null 直接 return 了, 所以还是第一个的 videoUrl, 这就导致了每次下载只下载第一个链接。
建议不要把 downloadUrl 放在getInstance()参数里,增加 set get 方法。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.