m3u8Downloader
概述
m3u8Downloader实现了m3u8流下载功能,如果是视频流一般保存为.mp4,如果是音频流一般保存为.mp3,请根据你下载的具体内容设置文件扩展名。
简单说一下模块的下载流程:
首先调用startService方法启动服务,然后调用downloadM3u8File方法开始下载,后台服务会启动下载任务,在指定root文件夹下 先生成一个以md5(url)为名字的缓存目录,这里面会缓存下载的文件,当下载到100%的时候,会合并缓存里面的文件,新建一个命名为saveName(如果指定了的话,没有指定用默认的) 的文件,这个就是用户想要下载的文件,然后会删除对应的缓存目录和缓存文件。
文件默认是下载 到sdcard的,现在主流的手机都基本上有16G内存大小。目前模块限制了用户必须有内存卡(包括内置的或扩展的)才能调用。要知道现在没内存卡的手机微信都拒绝安装了。
startService
启动下载服务。
startService({params}, callback(ret))
- 类型:字符串
- 描述:(可选项)保存文件的根目录,默认为m3u8_downloader,都是在sd卡的根路径之下。
callback(ret)
ret:
- 类型:JSON对象
- 内部字段:
示例代码
m3u8Downloader.startService({
"root": "123"
}, function(ret){
alert(JSON.stringify(ret))
});
可用性
Android系统
downloadM3u8File
下载m3u8文件。因为下载是耗时操作,虽然downloadM3u8File就立即返回结果,但并不表示已经下载完成,想查询下载进度,要调用后面的方法getProgress。
downloadM3u8File({params}, callback(ret))
url:
- 类型:字符串
- 描述:(必填)下载m3u8的url。
saveName:
- 类型:字符串
- 描述:(可选项)保存的文件名,如果不填的话,文件名为url的md5码 + “.mp4”。如果你下载的是mp3,就要设置这个参数,并以.mp3结尾。
callback(ret)
- 类型:JSON对象
- 内部字段:
示例代码
var m3u8Downloader = api.require('m3u8Downloader');
m3u8Downloader.startService({
"root": "123"
},function(ret){
alert("startService=" + JSON.stringify(ret));
m3u8Downloader.downloadM3u8File({
"url": "http://vfile1.grtn.cn/2017/1495/8032/4055/149580324055.ssm/149580324055.m3u8",
"saveName":"test.mp4"
alert("downloadM3u8File=" + JSON.stringify(ret));
})
}
});
可用性
Android系统
getProgress
查询下载进度。
getProgress({params}, callback(ret))
url:
- 类型:字符串
- 描述:(必填)下载m3u8的url。
callback(ret)
ret:
- 类型:JSON对象
- 内部字段:
示例代码
var m3u8Downloader = api.require('m3u8Downloader');
m3u8Downloader.getProgress({
}, function(ret){
if(ret.code==0){
if(ret.progress==1){
alert("下载完成");
}else{
var p = (ret.progress*100).toFixed(2);
alert(p + "%");
}
}
可用性
Android系统