目前视频下载实现可使用播放器接口实现.下载实现能够加密安全下载.本文档演示如何添加一个下载项且完成下载流程.
1.初始化下载管理类,配置下载加密密钥和保存路径。
AliyunDownloadConfig config = new AliyunDownloadConfig(); 设置安全图片,安全图片获取见另外一个文档:https://help.aliyun.com/document_detail/57920.html?spm=5176.doc51789.6.666.TQxC07 config.setSecretImagePath(Environment.getExternalStorageDirectory().getAbsolutePath() + "/DingTalk/encryptedApp.dat"); //设置保存路径。请确保有SD卡访问权限。 config.setDownloadDir(Environment.getExternalStorageDirectory().getAbsolutePath() + "/test_save"); //设置同时下载个数 config.setMaxNums(2); AliyunDownloadManager.getInstance(this).setDownloadConfig(config);2.准备下载
//(1)获取下载实例 downloadManager = AliyunDownloadManager.getInstance(this); //(2)添加下载监听 downloadManager.addDownloadInfoListener(downloadInfoListener); //(3)组装下载需要的视频信息并且调用prepareDoawloadMedia.如下的参数如何获取见:https://help.aliyun.com/document_detail/57916.html?spm=5176.7757620.6.666.4hd5uh AliyunDataSource.AliyunDataSourceBuilder adb = new AliyunDataSource. AliyunDataSourceBuilder(this); if (adb == null) return; adb.setAccessKeyId(akiStr); adb.setAccessKeySecret(aksStr); adb.setPlayKey(playKeyStr); adb.setVideoId(vidStr); downloadManager.prepareDownloadMedia(adb.build());3.调用准备下载之后,如信息没有异常会收到准备成功的回调.在准备成功的回调里面调用开始下载
@Override public void onPrepared(List<AliyunDownloadMediaInfo> list) { //第二步 ; 准备完成 Log.d("AliyunDownload","onPrepared"); AliyunDataSource.AliyunDataSourceBuilder adb = getAliyunDataSourceBuilder(); adb.setFormat(list.get(0).getFormat()); adb.setQuality(list.get(1).getQuality()); //返回值为0则为开始下载成功. downloadManager.startDownloadMedia(adb.build()); }4.如无异常将会开始下载,走onProgress的回调.成功会走onCompletion的回调.
private AliyunDownloadInfoListener downloadInfoListener = new AliyunDownloadInfoListener() { @Override public void onPrepared(List<AliyunDownloadMediaInfo> list) { //准备完成 } @Override public void onStart(AliyunDownloadMediaInfo aliyunDownloadMediaInfo) { //开始下载 } @Override public void onProgress(AliyunDownloadMediaInfo aliyunDownloadMediaInfo, int i) { //开始下载进度 } @Override public void onStop(AliyunDownloadMediaInfo aliyunDownloadMediaInfo) { //停止下载 } @Override public void onCompletion(AliyunDownloadMediaInfo aliyunDownloadMediaInfo) { //下载成功 } @Override public void onError(AliyunDownloadMediaInfo aliyunDownloadMediaInfo, int i, String s) { //下载出错 } @Override public void onWait(AliyunDownloadMediaInfo aliyunDownloadMediaInfo) { //等待下载 } @Override public void onM3u8IndexUpdate(AliyunDownloadMediaInfo outMediaInfo, int index) { //m3u8更新 } };本文为【问答合集】阿里视频云常见技术问题汇总——内含技术文档40+ 持续更新中 系列文章之一,如果本文还不能解决你的问题可以在汇总合集中查看,有任何问题也欢迎回复,谢谢.