Giter Site home page Giter Site logo

m3u8download's Issues

视频使用暴风影音也无法播放

image

我把如上那密钥的路径注释掉了,因为密钥获取失败,key不存在; 合出来的文件打不开,是因为密钥的问题吗,m3u8里的文件使用了AES-128对称加密算法。

地址:https://mv.aura-el.com/0434af755a444f738795823e1f61324d/NTdiMThhZWEtMmQ0OS00YmNmLThhYzktMjUwOWYwYzRhN2U1L2pqL2R5QU9CaFZCTmJnYjdsWjc4NnBneXZhZ29zbm5BQUFBQUFBQUFBQmVwdHcxWDVPQzVrK1NybHNaREdZSlJ0cVlMWE9XSStkYlRhRnl0NlFUSzV4b2tOQ2J4ZXh1

这是获取密钥的地址,我看原页面也没有访问这个地址,所以就注释掉了。

合并问题

你好 是否能加一个下载后不合并ts的方法呢

单例模式模式下,不同的下载链接只下载第一个链接

参考如下代码:
` 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 方法。

循环调用 线程出现问题

当我尝试循环调用的时候 出现了错误信息

下载网址:********* 已下载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();
}`

How to use header?

How to download a video with request headers? Is there a way to headers for download request?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.