m3u8点播文件下载(需要3.6.5_beta_1以上版本)

使用asM3U8()方法下载m3u8点播文件

Aria.download(this)
        .load(mUrl) // 设置点播文件下载地址
        .setFilePath(mFilePath, true) // 设置点播文件保存路径
        .asM3U8()   // 调整下载模式为m3u8点播
        .start()

一、ts文件处理

当所有的ts文件都下载完成后,aria框架会自动将所有ts文件合并为一个文件,如果你不希望合并ts文件,那么你可以使用merge(false)设置不合并文件ts文件。</br> ts文件路径说明:</br> 如果filePath为/sdcard/download/test.ts,那么ts文件路径就是/sdcard/download/.test.ts/

1.1、自动合并ts文件

merge(boolean merge)
参数 类型 说明
Merge Boolean True:下载完成后自动将所有ts文件合并为一个文件

1.2、手动合并ts文件

如果你希望手动合并ts文件或ts文件是加密的,你可以使用以下接口完成你需要的操作。

setMergeHandler(ITsMergeHandler handler)
参数 类型 说明
keyInfo M3U8KeyInfo 密钥信息,如果没有密钥则为空
tsPath List ts文件保存地址列表
Aria.download(M3U8VodDownloadActivity.this)
        .load(mUrl)
        .setFilePath(mFilePath, true)
        .asM3U8()
        .setMergeHandler(new ITsMergeHandler() {
          @Override public boolean merge(@Nullable M3U8KeyInfo keyInfo, List<String> tsPath) {
            return false;
          }
        })
        .start();

二、url转换器

对于某些m3u8文件来说,ts文件的url地址有可能不是可直接下载的http连接,为来能正常下载ts文件,你需要使用以下接口将url转换为可正常访问的http地址。

setTsUrlConvert(IVodTsUrlConverter converter)
参数 类型 说明
converter IVodTsUrlConverter

IVodTsUrlConverter的convert说明

参数 类型 说明
m3u8Url String m3u8文件下载地址
tsUrls List ts文件下载地址列表
Aria.download(M3U8VodDownloadActivity.this)
        .load(mUrl)
        .setFilePath(filePath)
        .asM3U8()
        .setTsUrlConvert(new IVodTsUrlConverter() {
          @Override public List<String> convert(String m3u8Url, List<String> tsUrls) {
            int index = m3u8Url.lastIndexOf("/");
            String parentUrl = m3u8Url.substring(0, index + 1);
            List<String> newUrls = new ArrayList<>();
            for (String url : tsUrls) {
              newUrls.add(parentUrl + url);
            }

            return newUrls;
          }
        })
        .start();

三、多码率适配

3.1 选择码率

如果你的m3u8文件是支持多码率的,并且你希望下载指定码率的文件,那么你可以使用setBandWidth()来设置对应码率,如果不设置码率,架默认采用第一个码率。

 Aria.download(this)
     .load(mUrl)
     .setFilePath(filePath)
     .asM3U8()
     .setBandWidth(11111) // 码率
     .start();

3.2、m3u8码率url转换器

对于某些服务器返回的多码率m3u8文件来说,对于码率的m3u8文件地址可能不是可直接访问的http地址,为了能正常获取到对应码率的m3u8文件,你需要使用以下方法转换url。

setBandWidthUrlConverter(String bandWidthUrl)
参数 类型 说明
bandWidthUrl String 原始码率地址
Aria.download(M3U8VodDownloadActivity.this)
        .load(mUrl)
        .setFilePath(mFilePath, true)
        .asM3U8()
        .setBandWidthUrlConverter(new IBandWidthUrlConverter() {
          @Override public String convert(String bandWidthUrl) {
            int index = mUrl.lastIndexOf("/");
            return mUrl.substring(0, index + 1) + bandWidthUrl;
          }
        })
        .start();

四、其它api

4.1 设置点播文件大小

由于m3u8协议的特殊性质,无法有效快速获取到正确到文件长度,如果你需要显示文件中长度,你需要自行设置文件大小。

.asVod().setFileSize(long fileSize)

4.2 设置同时下载的ts分片数量

默认情况下,对于同一点播文件的下载,最多同时下载4个ts分片,如果你希望增加或减少同时下载的ts分片数量,可以使用以下方法。

.asVod().setMaxTsQueueNum(int num)
Copyright © 2018 laoyuyu. | 蜀ICP备17031160号.            更新时间: 2019-07-17

results matching ""

    No results matching ""