转载请注明出处,大力哥的博客:http://blog.csdn.net/qq137722697
M3U8Manger ,android端M3U8文件下载管理器,下载完成自动合并为一个ts文件
最新在做视频点播功能,有一个下载m3u8格式视频的需求,网上找了一下基本没有相关的程序,怎么办呢?自己搞一个呗。大体功能基本实现,代码还有很多需要优化的地方,欢迎fork。
项目地址:https://github.com/huangdali/M3U8Manger
适用性:(最新版已支持更多格式,详情见github) 适用以下格式的m3u8格式(ts切片的名字就是当前时间eg:1500480000074.ts)
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:10
#EXTINF:9.960,
1500480000074.ts
#EXTINF:10.190,
1500480009999.ts
#EXTINF:9.960,
1500480020246.ts
#EXTINF:9.960,
1500480030189.ts
#EXTINF:10.030,
...
compile 'com.jwkj:M3U8Manger:v1.0.7'
M3U8Manger.getInstance()
.setUrl(url)//设置m3u8文件的url
.getM3U8(new M3U8Listener() {
@Override
public void onStart() {
Log.e("hdltag", "onStart(MainActivity.java:75):开始了" );
}
@Override
public void onError(Throwable errorMsg) {
Log.e("hdltag", "onStart(MainActivity.java:75):出错了"+errorMsg );
}
@Override
public void onCompleted() {
Log.e("hdltag", "onStart(MainActivity.java:75):完成了" );
}
@Override
public void onM3U8Info(M3U8 m3U8) {
Log.e("hdltag", "onStart(MainActivity.java:75):拿到结果了"+m3U8 );
Log.e("hdltag", "onM3U8Info(MainActivity.java:91):" + m3U8.getTsList());
}
});
M3U8Manger.getInstance()
.setUrl(url)
.setSaveFilePath("/sdcard/11/"+System.currentTimeMillis()+".ts")
.download(new M3U8Listener() {
@Override
public void onStart() {
Toast.makeText(MainActivity.this, "开始下载了", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Throwable errorMsg) {
Log.e("hdltag", "onError(MainActivity.java:28):下载出错了" + errorMsg);
}
@Override
public void onCompleted() {
Log.e("hdltag", "onCompleted(MainActivity.java:33):下载完成了");
}
@Override
public void onDownloadingProgress(int total, int progress) {
Log.e("hdltag", "onDownloadingProgress(MainActivity.java:126):" + total + " ------ " + progress);
}
});
M3U8Manger.getInstance().stop();
/**
* 加载监听器(接口类,推荐使用M3U8Listener类)
* Created by HDL on 2017/7/24.
*/
public interface DownLoadListener {
/**
* 开始的时候回调
*/
void onStart();
/**
* 错误的时候回调
*
* @param errorMsg
*/
void onError(Throwable errorMsg);
/**
* 下载完成的时候回调
*/
void onCompleted();
}
/**
* 监听器
* Created by HDL on 2017/7/25.
*/
public abstract class M3U8Listener implements DownLoadListener {
public void onM3U8Info(M3U8 m3U8) {
}
public void onDownloadingProgress(int total, int progress) {
}
}
v1.0.7(2017.07.31)
- 【修复】获取M3U8不走onStart的bug
v1.0.6
- 【修复】指定下载的区间时间不准问题
v1.0.5
- 【修复】下载成功走的是onStart
- 【新增】指定下载的区间
v1.0.4
- 【新增】获取M3U8基本信息方法
- 【新增】停止任务方法
v1.0.3
- 【修复】url失效时抛出异常
- 【新增】M3U8开始、结束时间
欢迎来fork,填充m3u8方面的空白。https://github.com/huangdali/M3U8Manger