m3u8Downloader

来自于:开发者立即使用

startService downloadM3u8File getProgress

概述

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对象
  • 内部字段:
  1. {
  2. status: 2 , //服务启动中=1,服务已启动或服务启动成功=2
  3. msg : "" //提示信息
  4. }

示例代码

  1. var m3u8Downloader = api.require('m3u8Downloader');
  2. m3u8Downloader.startService({
  3. "root": "123"
  4. }, function(ret){
  5. alert(JSON.stringify(ret))
  6. });

可用性

Android系统

downloadM3u8File

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

downloadM3u8File({params}, callback(ret))

params

url:

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

saveName:

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

callback(ret)

ret:

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

示例代码

  1. var m3u8Downloader = api.require('m3u8Downloader');
  2. m3u8Downloader.startService({
  3. "root": "123"
  4. },function(ret){
  5. alert("startService=" + JSON.stringify(ret));
  6. if(ret.status==2){
  7. m3u8Downloader.downloadM3u8File({
  8. "url": "http://vfile1.grtn.cn/2017/1495/8032/4055/149580324055.ssm/149580324055.m3u8",
  9. "saveName":"test.mp4"
  10. }, function(ret){
  11. alert("downloadM3u8File=" + JSON.stringify(ret));
  12. })
  13. }
  14. });

可用性

Android系统

getProgress

查询下载进度。

getProgress({params}, callback(ret))

params

url:

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

callback(ret)

ret:

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

示例代码

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

可用性

Android系统