m3u8 跳片(边下边看支持)
如果你希望实现m3u8点播文件边下边看,拖动播放功能;那么你可以通过框架提供的跳片功能来实现。
具体方法是:
1、当用户拖动进度跳时,使用jumPeerIndex(index);
让框架下载指定索引之后的ts切片。
2、然后通过@M3U8.onPeerStart
、@M3U8.onPeerComplete
、@M3U8.onPeerFail
获取切片下载的状态。
3、最后在@M3U8.onPeerComplete
中使用MediaPlayer
播放下载完成的切片。
注意:该功能需要3.6.5以上版本支持
一、下载指定索引位置后的切片
jumPeerIndex(index);
参数 | 类型 | 说明 |
---|---|---|
Index | Int | 下载index之后的切片 |
使用示例:
Aria.download(this).load(mUrl).asM3U8().asVod().jumPeerIndex(10);
二、切片状态回调
2.1、@M3U8.onPeerStart
当切片被开始下载时,框架会调用被@M3U8.onPeerStart
注解的方法,通知应用该切片开始下载。
被注解的方法需要以下3个参数:
参数 | 类型 | 说明 |
---|---|---|
m3u8Url | String | 该m3u8点播文件的下载地址 |
peerPath | String | 当前下载的ts切片的保存路径 |
peerIndex | Int | 当前下载的的ts切片的索引 |
使用示例
@M3U8.onPeerStart
void onPeerStart(String m3u8Url, String peerPath, int peerIndex) {
ALog.d(TAG, "peer start, path: " + peerPath + ", index: " + peerIndex);
}
2.2、@M3U8.onPeerComplete
当切片被开始下载完成时,框架会调用被`@M3U8.onPeerComplete注解的方法,通知应用该切片已经下载完成。
被注解的方法需要以下3个参数:
参数 | 类型 | 说明 |
---|---|---|
m3u8Url | String | 该m3u8点播文件的下载地址 |
peerPath | String | 当前下载的ts切片的保存路径 |
peerIndex | Int | 当前下载的的ts切片的索引 |
使用示例:
@M3U8.onPeerComplete
void onPeerComplete(String m3u8Url, String peerPath, int peerIndex) {
ALog.d(TAG, "peer complete, path: " + peerPath + ", index: " + peerIndex);
mVideoFragment.addPlayer(peerIndex, peerPath);
}
2.1、@M3U8.onPeerFail
当切片下载失败时,框架会调用被@M3U8.onPeerFail
注解的方法,通知应用该切片下载失败。
被注解的方法需要以下3个参数:
参数 | 类型 | 说明 |
---|---|---|
m3u8Url | String | 该m3u8点播文件的下载地址 |
peerPath | String | 当前下载的ts切片的保存路径 |
peerIndex | Int | 当前下载的的ts切片的索引 |
使用示例:
@M3U8.onPeerFail
void onPeerFail(String m3u8Url, String peerPath, int peerIndex) {
ALog.d(TAG, "peer fail, path: " + peerPath + ", index: " + peerIndex);
}
三、切片最大任务数设置
有的时候,你可能需要控制同时下载的切片数量。使用setMaxTsQueueNum(num)
能有效控制切片的最大任务数。
参数说明:
参数 | 类型 | 说明 |
---|---|---|
num | String | 切片最大任务数 |
使用示例:
Aria.download(this).load(mUrl).asM3U8().asVod().setMaxTsQueueNum(1);