m3u8Downloader

来自于:开发者立即使用

概述

m3u8Downloader实现了m3u8流下载功能,如果是视频流一般保存为.mp4,如果是音频流一般保存为.mp3,请根据你下载的具体内容设置文件扩展名。

简单说一下模块的下载流程:
首先调用startService方法启动服务,然后调用downloadM3u8File方法开始下载,后台服务会启动下载任务,在指定root文件夹下 先生成一个以md5(url)为名字的缓存目录,这里面会缓存下载的文件,当下载到100%的时候,会合并缓存里面的文件,新建一个命名为saveName(如果指定了的话,没有指定用默认的) 的文件,这个就是用户想要下载的文件,然后会删除对应的缓存目录和缓存文件。

文件默认是下载 到sdcard的,现在主流的手机都基本上有16G内存大小。目前模块限制了用户必须有内存卡(包括内置的或扩展的)才能调用。要知道现在没内存卡的手机微信都拒绝安装了。

startService

启动下载服务。

startService({params}, callback(ret))

params

root:

  • 类型:字符串
  • 描述:(可选项)保存文件的根目录,默认为m3u8_downloader,都是在sd卡的根路径之下。

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: 2 ,   //服务启动中=1,服务已启动或服务启动成功=2
    msg : ""   //提示信息
}

示例代码

var m3u8Downloader = api.require('m3u8Downloader');
m3u8Downloader.startService({
    "root": "123"
}, function(ret){
    alert(JSON.stringify(ret))
});

可用性

Android系统

downloadM3u8File

下载m3u8文件。因为下载是耗时操作,虽然downloadM3u8File就立即返回结果,但并不表示已经下载完成,想查询下载进度,要调用后面的方法getProgress。

downloadM3u8File({params}, callback(ret))

params

url:

  • 类型:字符串
  • 描述:(必填)下载m3u8的url。

saveName:

  • 类型:字符串
  • 描述:(可选项)保存的文件名,如果不填的话,文件名为url的md5码 + ".mp4"。如果你下载的是mp3,就要设置这个参数,并以.mp3结尾。

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    code: -1 ,   //-1表示失败,其它数字表示已经开始在下载。
    msg : "" ,   //提示信息
    saveName : ""  //保存的文件名
}

示例代码

var m3u8Downloader = api.require('m3u8Downloader');
m3u8Downloader.startService({
    "root": "123"
},function(ret){
    alert("startService=" + JSON.stringify(ret));
    if(ret.status==2){
        m3u8Downloader.downloadM3u8File({
            "url": "http://vfile1.grtn.cn/2017/1495/8032/4055/149580324055.ssm/149580324055.m3u8",
            "saveName":"test.mp4"
        }, function(ret){
            alert("downloadM3u8File=" + JSON.stringify(ret));
        })
    }
});

可用性

Android系统

getProgress

查询下载进度。

getProgress({params}, callback(ret))

params

url:

  • 类型:字符串
  • 描述:(必填)下载m3u8的url。

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    code: 0 ,   //-1表示失败,其它数字表示成功。
    msg : "" ,   //提示信息
    progress : 0.262656  //0到1之间的浮点数,自己可以*100并且toFixed(2)换算成2位数的百分比。
}

示例代码

var m3u8Downloader = api.require('m3u8Downloader');
m3u8Downloader.getProgress({
    "url": "http://vfile1.grtn.cn/2017/1495/8032/4055/149580324055.ssm/149580324055.m3u8"
}, function(ret){
    if(ret.code==0){
        if(ret.progress==1){
            alert("下载完成");
        }else{
            var p = (ret.progress*100).toFixed(2);
            alert(p + "%");
        }
    }
});

可用性

Android系统