... | @@ -19,7 +19,7 @@ allprojects { |
... | @@ -19,7 +19,7 @@ allprojects { |
|
```
|
|
```
|
|
dependencies {
|
|
dependencies {
|
|
//获得场景视频SDK,必须引入
|
|
//获得场景视频SDK,必须引入
|
|
implementation 'com.bokecc:vod:3.11.0'
|
|
implementation 'com.bokecc:vod:3.12.0'
|
|
//必须引用commonLib
|
|
//必须引用commonLib
|
|
implementation 'com.bokecc:commonLib:0.1.12'
|
|
implementation 'com.bokecc:commonLib:0.1.12'
|
|
//必须引用
|
|
//必须引用
|
... | @@ -489,8 +489,177 @@ setReconnectLimit(int reconnectLimit) |
... | @@ -489,8 +489,177 @@ setReconnectLimit(int reconnectLimit) |
|
//设置网络请求的超时时间,区间[5000-30000],单位为ms,默认值为10000ms
|
|
//设置网络请求的超时时间,区间[5000-30000],单位为ms,默认值为10000ms
|
|
setTimeOut(int timeOut)
|
|
setTimeOut(int timeOut)
|
|
```
|
|
```
|
|
|
|
### 3.5.6 使用VodDownloadManager管理下载
|
|
|
|
Downloader类实现了下载的功能,使用者可以在Downloader的基础上自己创建下载管理逻辑,也可以使用SDK提供的下载管理方法,需要注意的是使用VodDownloadManager需要以单例VodDownloadManager.getInstance()的形式调用。
|
|
|
|
|
|
### 3.5.6 批量获取下载地址
|
|
|
|
|
|
初始化VodDownloadManager。
|
|
|
|
```
|
|
|
|
//存储路径downloadPath的格式如"/storage/emulated/0/HuodeDownload/"
|
|
|
|
String downloadPath = MultiUtils.createDownloadPath();
|
|
|
|
//使用VodDownloadManager需要以单例VodDownloadManager.getInstance()的形式调用
|
|
|
|
VodDownloadManager.getInstance().init(HuodeApplication.getContext(),ConfigUtil.USERID,ConfigUtil.API_KEY,downloadPath);
|
|
|
|
```
|
|
|
|
|
|
|
|
设置下载重试次数,默认为10,可设置区间[0, 100]。
|
|
|
|
```
|
|
|
|
VodDownloadManager.getInstance().setReconnectLimit(10);
|
|
|
|
```
|
|
|
|
|
|
|
|
设置下载重试间隔,单位ms,默认3000ms。
|
|
|
|
```
|
|
|
|
VodDownloadManager.getInstance().setDownloadRetryPeriod(3000);
|
|
|
|
```
|
|
|
|
|
|
|
|
设置是否下载字幕,默认下载,注:视频有字幕资源文件时才会下载。
|
|
|
|
```
|
|
|
|
VodDownloadManager.getInstance().setDownloadSubtitle(true);
|
|
|
|
```
|
|
|
|
|
|
|
|
设置同时下载的个数,默认为2,此值不宜设置过大。
|
|
|
|
```
|
|
|
|
VodDownloadManager.getInstance().setMaxDownloadingNum(2);
|
|
|
|
```
|
|
|
|
|
|
|
|
下载单个视频,首先要构建一个DownloadConfig实例,DownloadConfig的字段信息如下。
|
|
|
|
```
|
|
|
|
private String videoId;//视频ID,不可为空
|
|
|
|
private String veriCode;//视频授权码,没有可不填
|
|
|
|
private String fileName;//要保存的文件名,不可为空,同一个视频不同清晰度的文件名要不同(可以拼上清晰度字段或自定义的方式来区分)
|
|
|
|
private int downloadMode;//下载模式,0:音视频模式 1:下载视频 2:下载音频
|
|
|
|
private int definition;//清晰度
|
|
|
|
private String videoCover;//传入的视频封面,可为null,若此处为null,后续的返回的VodDownloadBean此值也为null
|
|
|
|
```
|
|
|
|
调用VodDownloadManager.getInstance().insertDownload(downloadConfig)插入下载任务。
|
|
|
|
```
|
|
|
|
DownloadConfig downloadConfig = new DownloadConfig(videoId, verificationCode, dowloadTitle, downloadMode, currentDefinition, videoCover);
|
|
|
|
VodDownloadManager.getInstance().insertDownload(downloadConfig);
|
|
|
|
```
|
|
|
|
|
|
|
|
下载多个视频,调用VodDownloadManager.getInstance().insertBatchDownload(downloadConfigs)。
|
|
|
|
```
|
|
|
|
ArrayList<DownloadConfig> downloadConfigs = new ArrayList<>();
|
|
|
|
downloadConfigs.add(downloadConfig1);
|
|
|
|
downloadConfigs.add(downloadConfig2);
|
|
|
|
downloadConfigs.add(downloadConfig3);
|
|
|
|
VodDownloadManager.getInstance().insertBatchDownload(downloadConfigs);
|
|
|
|
```
|
|
|
|
|
|
|
|
开启一个定时器,调用VodDownloadManager.getInstance().update(),启动和刷新下载任务,定时器的间隔为1000ms,不要修改为别的数值。
|
|
|
|
```
|
|
|
|
|
|
|
|
timer.schedule(new TimerTask() {
|
|
|
|
@Override
|
|
|
|
public void run() {
|
|
|
|
VodDownloadManager.getInstance().update();
|
|
|
|
}
|
|
|
|
}, 1 * 1000, 1 * 1000);
|
|
|
|
```
|
|
|
|
|
|
|
|
刷新下载进度。
|
|
|
|
```
|
|
|
|
VodDownloadManager.getInstance().setOnUpdateDownload(new VodDownloadManager.OnUpdateDownload() {
|
|
|
|
@Override
|
|
|
|
public void updateDownload() {
|
|
|
|
//在主线程刷新UI
|
|
|
|
activity.runOnUiThread(new Runnable() {
|
|
|
|
@Override
|
|
|
|
public void run() {
|
|
|
|
initAllPause();
|
|
|
|
updateListView();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
监听有新的文件下载完成,会返回vodDownloadBean实例。
|
|
|
|
```
|
|
|
|
VodDownloadManager.getInstance().setOnDownloadFinishListener(new VodDownloadManager.OnDownloadFinishListener() {
|
|
|
|
@Override
|
|
|
|
public void onDownloadFinish(VodDownloadBean vodDownloadBean) {
|
|
|
|
//vodDownloadBean包含下载文件的信息,根据需要自行处理
|
|
|
|
}
|
|
|
|
});
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
VodDownloadBean各字段的信息如下,部分字段的值可能为空或0。
|
|
|
|
```
|
|
|
|
private String videoId;//视频ID
|
|
|
|
private String fileName;//文件名
|
|
|
|
private String format;//文件格式
|
|
|
|
private String veriCode;//视频授权码
|
|
|
|
private int downloadMode;//下载模式,0:音视频模式 1:下载视频 2:下载音频
|
|
|
|
private String videoCover;//视频封面,和创建下载任务时传入的封面相同
|
|
|
|
private long start;//断点续传的开始位置
|
|
|
|
private long end;//文件的总大小
|
|
|
|
private int status;//下载状态,100表示等待中,200表示下载中,300表示下载暂停,400表示下载完成
|
|
|
|
private int definition;//清晰度
|
|
|
|
private String videoPath;//文件的保存路径
|
|
|
|
private int subtitleNum;//字幕数量
|
|
|
|
private int firstSubtitleStatus;//第一种字幕的下载状态,1:成功,2:失败
|
|
|
|
private String firstSubtitlePath;//第一种字幕的保存路径
|
|
|
|
private String firstSubtitleUrl;//第一种字幕文件地址,仅在下载字幕失败时有值
|
|
|
|
private int secondSubtitleStatus;//第二种字幕的下载状态,1:成功,2:失败
|
|
|
|
private String secondSubtitlePath;//第二种字幕的保存路径
|
|
|
|
private String secondSubtitleUrl;//第二种字幕文件地址,仅在下载字幕失败时有值
|
|
|
|
private int saveSubtitleSetStatus;//保存字幕设置状态,1:成功,2:失败
|
|
|
|
private String saveSubtitleSetPath;//字幕设置的保存路径
|
|
|
|
private String subtitleSetInfo;//字幕设置信息,仅在保存字幕设置失败时有值
|
|
|
|
private int errorCode;//下载错误码
|
|
|
|
private String errorMsg;//下载错误信息
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
删除下载任务。
|
|
|
|
```
|
|
|
|
VodDownloadManager.getInstance().deleteDownloadInfo(downloadOperator);
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
暂停下载。
|
|
|
|
```
|
|
|
|
VodDownloadManager.getInstance().pauseDownload(downloadOperator);
|
|
|
|
```
|
|
|
|
|
|
|
|
由暂停状态恢复下载。
|
|
|
|
```
|
|
|
|
VodDownloadManager.getInstance().resumeDownload(downloadOperator);
|
|
|
|
```
|
|
|
|
|
|
|
|
恢复或暂停下载切换。
|
|
|
|
```
|
|
|
|
VodDownloadManager.getInstance().resumeOrPauseDownload(downloadOperator);
|
|
|
|
```
|
|
|
|
|
|
|
|
暂停全部下载。
|
|
|
|
```
|
|
|
|
VodDownloadManager.getInstance().pauseAllDownload();
|
|
|
|
```
|
|
|
|
|
|
|
|
恢复全部下载。
|
|
|
|
```
|
|
|
|
VodDownloadManager.getInstance().resumeAllDownload();
|
|
|
|
```
|
|
|
|
|
|
|
|
判断当前文件是否已经在下载队列中。
|
|
|
|
```
|
|
|
|
VodDownloadManager.getInstance().isExistDownloadInfo(fileName);
|
|
|
|
```
|
|
|
|
|
|
|
|
获取下载中的个数。
|
|
|
|
```
|
|
|
|
VodDownloadManager.getInstance().getDownloadingCount();
|
|
|
|
```
|
|
|
|
|
|
|
|
获得暂停和等待中状态下的个数。
|
|
|
|
```
|
|
|
|
VodDownloadManager.getInstance().getPauseAndWaitCount();
|
|
|
|
```
|
|
|
|
### 3.5.7 批量获取下载地址
|
|
|
|
|
|
批量最多获取10个视频的下载地址,超过10个的则只返回前10个视频的下载信息。
|
|
批量最多获取10个视频的下载地址,超过10个的则只返回前10个视频的下载信息。
|
|
```
|
|
```
|
... | | ... | |