huangdali / M3U8Manger

M3U8管理器,M3U8格式视频下载,支持点播下载,直播缓存
580 stars 154 forks source link

可以断点续传吗 #1

Open marscl opened 7 years ago

marscl commented 7 years ago

有个错误 java.lang.NumberFormatException: For input string: "http://vali.cp31.ott.cibntv.net/657336C1E3B4571B1153A6E28/0300011501576AD30D0029132629A1DFA5FB02-87CA-5E89-7D82-FF5862B03A33.flv.ts?sid=050260411822420e45e55_01&sign=2ed144f976fbdd7c0770ee747e361395&ctype=50&ts_start=0.0&ts_end=11" at java.lang.Long.parseLong(Long.java:443) at java.lang.Long.parseLong(Long.java:485) at com.hdl.m3u8.bean.M3U8Ts.getLongDate(M3U8Ts.java:44) at com.hdl.m3u8.bean.M3U8.getStartTime(M3U8.java:63) at com.hdl.m3u8.utils.MUtils.getLimitM3U8Ts(MUtils.java:125) at com.hdl.m3u8.M3U8Manger.download(M3U8Manger.java:284) at com.hdl.m3u8.M3U8Manger.access$1000(M3U8Manger.java:26) at com.hdl.m3u8.M3U8Manger$3.run(M3U8Manger.java:195)

marscl commented 7 years ago

下载地址: http://qtv.soshane.com/youku.php?vid=OK0MmL3R93G/NqkCFv076tZqUjEvo2V5qzkjmHC00nY=&tudou=0&tv=&db=

huangdali commented 7 years ago

v2.x之后可以断点续传哦

huangdali commented 7 years ago

@marscl 目前只支持ts文件名字为"时间戳.ts"格式的哦,其他格式的建议下载源码修改一下解析规则即可

marscl commented 7 years ago

好的 谢谢

marscl commented 7 years ago

直接合并好像不能播放

huangdali commented 7 years ago

文件名字的后缀必须是ts哦

marscl commented 7 years ago

只能播放1分钟左右,总的时间会显示有130分钟,实际时间为40分钟

huangdali commented 7 years ago

setClearTempDir用这个设置不清楚临时目录,去sd卡里面的m3u8temp中看看文件是否下载成功

marscl commented 7 years ago

文件全部下载了,单个视频都可以播放。

marscl commented 7 years ago

网上说要搭本地服务器啥的。

huangdali commented 7 years ago

合并用的是这段代码哦,我这面是没有问题的,你可以手动调用这个合并你一下临时文件里面的ts,或者自己写一个合并的方法看看合并之后是否还有问题

  /**
     * 将M3U8对象的所有ts切片合并为1个
     *
     * @param m3u8
     * @param tofile
     * @throws IOException
     */
    public static void merge(M3U8 m3u8, String tofile, String basePath) throws IOException {
        List<M3U8Ts> mergeList = getLimitM3U8Ts(m3u8);
        File saveFile = new File(tofile);
        FileOutputStream fos = new FileOutputStream(saveFile);
        File file;
        for (M3U8Ts ts : mergeList) {
            file = new File(basePath, ts.getFile());
            if (file.isFile() && file.exists()) {
                IOUtils.copyLarge(new FileInputStream(file), fos);
            }
        }
        fos.close();
    }
huangdali commented 7 years ago

搭建本地服务器是另一种实现方式了,我用的是合并

marscl commented 7 years ago

谢谢了,还是没解决,可能是下载的视频问题