m3u8Downloader

downloadM3u8File

概述

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对象
  • 内部字段:

示例代码

  1. m3u8Downloader.startService({
  2. "root": "123"
  3. }, function(ret){
  4. alert(JSON.stringify(ret))
  5. });

可用性

Android系统

downloadM3u8File

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

downloadM3u8File({params}, callback(ret))

url:

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

saveName:

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

callback(ret)

  • 类型:JSON对象
  • 内部字段:

示例代码

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

可用性

Android系统

getProgress

查询下载进度。

getProgress({params}, callback(ret))

url:

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

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:

示例代码

  1. var m3u8Downloader = api.require('m3u8Downloader');
  2. m3u8Downloader.getProgress({
  3. }, function(ret){
  4. if(ret.code==0){
  5. if(ret.progress==1){
  6. alert("下载完成");
  7. }else{
  8. var p = (ret.progress*100).toFixed(2);
  9. alert(p + "%");
  10. }
  11. }

可用性

Android系统