m3u8Download

来自于:开发者立即使用

addEventListener start pause resume mergeMp4File isDownloadFinish getCacheSize clearCache

论坛示例

为帮助用户更好更快的使用模块,论坛维护了一个示例,示例中包含示例代码供您参考。

概述

m3u8Download实现了iOS系统下m3u8的下载功能,根据解析的m3u8文件分片ts文件进行下载。得到的是对应分片ts文件转换后的mp4文件列表。同时还有一个耗时合并接口,由于m3u8所有分片文件合并后的文件很大,所以合并耗时接口单独提取出来供开发者使用。

常见错误码。

错误码错误描述
100解析失败啦!换个视频地址试试
101视频没有下载完,需调用恢复接口继续下载
102视频地址异常,请重新调用下载接口下载
103分片视频已下载完成,请调用合并接口进行视频合成
104已经暂停状态,不能重复执行暂停接口
105已经开始状态,不能重复执行开始接口
106已下载完成,获取视频地址可以进行播放
107没有可转换的分片视频文件进行合成
108视频转换处理失败,重新下载

模块接口

addEventListener

m3u8视频下载监听事件

addEventListener({params}, callback(ret, err))

params

videoId:

  • 类型:字符串
  • 描述:(可选项)视频ID,当不传某一个唯一的视频ID时,该监听会返回所有视频下载信息,当设置具体的视频ID时,只返回设置的视频ID的下载信息。

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. status: true, //布尔型;true
  3. evenType : 'DownloadFail',//状态类型 DownloadFail、DownloadFinish、DownloadProgress
  4. DownloadVideoId :'', //视频ID
  5. DownloadData : [], //下载完成后返回的视频数组 仅DownloadFinish有值
  6. progress : 0, //下载进度 仅DownloadProgress有值
  7. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. msg: ''
  3. }

示例代码

  1. var demo = api.require('m3u8Download');
  2. demo.addEventListener({
  3. videoId : 'videoId'
  4. },function(ret, err) {
  5. api.toast({
  6. msg : JSON.stringify(ret) + " " + JSON.stringify(err)
  7. });
  8. });

可用性

iOS系统

可提供的1.0.0及更高版本

start

开始下载

start({params}, callback(ret, err))

params

videoId:

  • 类型:字符串
  • 描述:(必填项)视频唯一的ID。

url:

  • 类型:字符串
  • 描述:(必填项)M3U8下载地址,该地址必须为可解析的地址。不能是直播地址,请开发者自行控制。

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true //布尔型;true||false
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. errorCode: -1,
  3. errorMessage:''
  4. }

示例代码

  1. var demo = api.require('m3u8Download');
  2. demo.start({
  3. videoId : videoId,
  4. url : url
  5. }, function(ret, err) {
  6. api.toast({
  7. msg : JSON.stringify(ret) + " " + JSON.stringify(err)
  8. });
  9. });

可用性

iOS系统

可提供的1.0.0及更高版本

pause

暂停下载

pause({params}, callback(ret, err))

params

videoId:

  • 类型:字符串
  • 描述:(必填项)视频唯一的ID。

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true //布尔型;true||false
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. errorCode: -1,
  3. errorMessage:''
  4. }

示例代码

  1. var demo = api.require('m3u8Download');
  2. demo.pause({
  3. videoId : videoId
  4. }, function(ret, err) {
  5. api.toast({
  6. msg:JSON.stringify(ret) + " " + JSON.stringify(err)
  7. });
  8. });

可用性

iOS系统

可提供的1.0.0及更高版本

resume

恢复下载

resume({params}, callback(ret, err))

params

videoId:

  • 类型:字符串
  • 描述:(必填项)视频唯一的ID。

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true //布尔型;true||false
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. errorCode: -1,
  3. errorMessage:''
  4. }

示例代码

  1. var demo = api.require('m3u8Download');
  2. demo.resume({
  3. videoId : videoId
  4. }, function(ret, err) {
  5. api.toast({
  6. msg:JSON.stringify(ret) + " " + JSON.stringify(err)
  7. });
  8. });

可用性

iOS系统

可提供的1.0.0及更高版本

isDownloadFinish

是否下载完成

isDownloadFinish({params}, callback(ret, err))

params

videoId:

  • 类型:字符串
  • 描述:(必填项)视频唯一的ID。

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true, //布尔型;true||false
  3. videoUrl : '', //合并后的视频地址
  4. videoData : [] //下载成功的分片视频地址
  5. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. errorCode: -1,
  3. errorMessage:''
  4. }

示例代码

  1. var demo = api.require('m3u8Download');
  2. demo.isDownloadFinish({
  3. videoId : videoId
  4. }, function(ret, err) {
  5. api.toast({
  6. msg:JSON.stringify(ret) + " " + JSON.stringify(err)
  7. });
  8. });

可用性

iOS系统

可提供的1.0.0及更高版本

mergeMp4File

合并分片视频为MP4文件

mergeMp4File({params}, callback(ret, err))

params

videoId:

  • 类型:字符串
  • 描述:(必填项)视频唯一的ID。

isCleanTempFile:

  • 类型:布尔型
  • 描述:(可选项)是否删除临时文件
  • 默认值:false

isSaveToLibrary:

  • 类型:布尔型
  • 描述:(可选项)是否保存视频到相册
  • 默认值:true

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true //布尔型;true||false
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. errorCode: -1,
  3. errorMessage:''
  4. }

示例代码

  1. var demo = api.require('m3u8Download');
  2. demo.mergeMp4File({
  3. videoId : videoId,
  4. isCleanTempFile : true
  5. }, function(ret, err) {
  6. api.toast({
  7. msg:JSON.stringify(ret) + " " + JSON.stringify(err)
  8. });
  9. });

可用性

iOS系统

可提供的1.0.0及更高版本

getCacheSize

获取缓存大小

getCacheSize({params}, callback(ret,err))

params

videoId:

  • 类型:字符串
  • 描述:(可选项)视频唯一的ID,不填则获取模块所有缓存视频文件夹大小。

callback(ret,err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true, //布尔型;true|false
  3. cacheSize : 0 //缓存大小
  4. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. errorCode: -1,
  3. errorMessage:'视频id不存在!'
  4. }

示例代码

  1. var demo = api.require('m3u8Download');
  2. demo.getCacheSize(function(ret, err) {
  3. api.toast({
  4. msg:JSON.stringify(ret) + " " + JSON.stringify(err)
  5. });
  6. });

可用性

iOS系统

可提供的1.0.0及更高版本

clearCache

清除缓存文件

clearCache({params}, callback(ret,err))

params

videoId:

  • 类型:字符串
  • 描述:(可选项)视频唯一的ID,不填则清除模块所有缓存视频文件夹大小。

callback(ret,err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true, //布尔型;true|false
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. errorCode: -1,
  3. errorMessage:'视频id不存在!'
  4. }

示例代码

  1. var demo = api.require('m3u8Download');
  2. demo.clearCache(function(ret, err) {
  3. api.toast({
  4. msg:JSON.stringify(ret) + " " + JSON.stringify(err)
  5. });
  6. });

可用性

iOS系统

可提供的1.0.0及更高版本