android实现m3u8直播缓存/下载,M3U8Manger
android实现m3u8直播缓存/下载,M3U8Manger
尊重原创,转载请注明出处,原文地址: http://blog.csdn.net/qq137722697
- M3U8格式视频下载
- 获取M3U8格式信息
- 中途停止任务
- 获取下载速度
- 支持多任务下载
- 支持url重定向处理过的m3u8
- 支持直播缓存
温馨提示: 项目会一直维护, 请尽量通过issue渠道提bug和改进建议(绑定过邮箱,会第一时间回复)
—
最新版本见GitHub仓库:https://github.com/huangdali/M3U8Manger
体验app
扫描二维码:
或打开下面的地址
https://fir.im/2g5c
适用性
适用以下格式的m3u8格式(如果名字不是时间毫秒值的话,调用获取m3u8信息的方法将得不到开始时间,但不影响下载),当然有鉴权信息也是允许的
#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:v2.3.0'
获取M3U8信息:
M3U8InfoManger.getInstance().getM3U8Info(url, new OnM3U8InfoListener() {@Overridepublic void onSuccess(M3U8 m3U8) {ELog.e("获取成功了" + m3U8);}@Overridepublic void onStart() {ELog.e("开始获取信息");}@Overridepublic void onError(Throwable errorMsg) {ELog.e("出错了" + errorMsg);}});
点播下载
下载M3U8格式的视频文件:
M3U8DownloadTask task1 = new M3U8DownloadTask("1001");
//下载按钮监听事件public void onDownload(View view) {task1.download(url, new OnDownloadListener() {@Overridepublic void onDownloading(final long itemFileSize, final int totalTs, final int curTs) {ELog.e(task1.getTaskId() + "下载中.....itemFileSize=" + itemFileSize + "\ttotalTs=" + totalTs + "\tcurTs=" + curTs);}/*** 下载成功*/@Overridepublic void onSuccess() {ELog.e(task1.getTaskId() + "下载完成了");}/*** 当前的进度回调** @param curLenght*/@Overridepublic void onProgress(final long curLenght) {if (curLenght - lastLength > 0) {final String speed = NetSpeedUtils.getInstance().displayFileSize(curLenght - lastLength) + "/s";ELog.e(task1.getTaskId() + "speed = " + speed);runOnUiThread(new Runnable() {@Overridepublic void run() {ELog.e("更新了");tvSpeed1.setText(speed);ELog.e(tvSpeed1.getText().toString());}});lastLength = curLenght;}}@Overridepublic void onStart() {ELog.e(task1.getTaskId() + "开始下载了");}@Overridepublic void onError(Throwable errorMsg) {ELog.e(task1.getTaskId() + "出错了" + errorMsg);}});}
停止任务:
task1.stop();
直播缓存
开启缓存
String toFile="/sdcard/" + System.currentTimeMillis() + ".ts";tvSaveFilePathTip.setText("缓存目录在:/sdcard/11m3u8/\n最终导出的缓存文件在:"+toFile);M3U8LiveManger.getInstance().setTempDir("/sdcard/11m3u8/").setSaveFile(toFile)//(设置导出缓存文件)必须以.ts结尾.caching(url, new OnDownloadListener() {@Overridepublic void onDownloading(long itemFileSize, int totalTs, int curTs) {//此回调只有curTs有意义,表示开始缓存第几个ts}@Overridepublic void onSuccess() {//此回调没有什么意义}@Overridepublic void onProgress(long curLength) {if (curLength - lastLength > 0) {//计算缓存速度final String speed = NetSpeedUtils.getInstance().displayFileSize(curLength - lastLength) + "/s";lastLength = curLength;}}@Overridepublic void onStart() {//开始缓存}@Overridepublic void onError(Throwable errorMsg) {//缓存出错了}});
获取开始缓存到当前时间的ts文件
String filePath = M3U8LiveManger.getInstance().getCurrentTs();
温馨提示:此方法会自动合并当次任务所下载的所有ts文件,如果你不需要此方法,也可以使用com.hdl.m3u8.utils.MUtils.merge(java.util.List
停止缓存
M3U8LiveManger.getInstance().stop();
版本记录
v2.x
v2.3.0(2018.03.07)
- 【新增】支持缓存直播类型的m3u8
v2.2.3(2018.03.06)
- 【优化】支持更多格式的ts命名
v2.1.9(2017.11.21)
- 【优化】支持url重定向处理过的m3u8
v2.1.8(2017.11.21)
- 【新增】支持m3u8中的ts名字为非时间毫秒值的格式(此时ts的开始时间为0)
v2.1.7(2017.09.12)
- 【新增】设置下载线程数方法(默认3个,建议不要设置超过5个)
v2.1.6(2017.08.15)
- 【新增】设置连接超时时间、读取超时时间
v2.1.4、v2.1.5(2017.08.14)
- 【优化】延迟删除临时文件(因为存取速度比较低的设备可能存在未移动完成而被删除情况)
v2.1.3(2017.08.14)
- 【优化】网络不稳定时的数据抖动问题
v2.1.2(2017.08.14)
- 【新增】设置是否清除临时目录的方法
v2.1.1(2017.08.14)
- 【修复】文件生成与设置的文件名字不一致问题
v2.0.8(2017.08.14)
- 【修复】设置文件保存路径时,会多出文件夹
v2.0.7(2017.08.14)
- 【修复】设置文件保存路径方法被隐藏
v2.0.6(2017.08.14)
- 【新增】断点续传
- 【新增】支持多任务
- 【优化】下载速度不准确问题
V1.x
v1.0.8(2017.08.08)
- 【新增】onLoadFileSizeForItem方法(获取单个ts文件的平均大小)
- 可根据这个平均值x总的切片个数(total)=总文件的大小
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开始、结束时间
android实现m3u8直播缓存/下载,M3U8Manger相关推荐
- Android——实现m3u8视频缓存
1.M3U8协议 HLS(HTTP Live Streaming)是苹果公司针对iPhone.iPod.iTouch和iPad等移动设备而开发的基于HTTP协议的流媒体解决方案.在 HLS 技术中 W ...
- Android,播放m3u8视频和下载m3u8的视频
因最近项目需要,研究了一个礼拜的m3u8.格式为m3u8的视频,其实是由多个.ts文件组成在一起播放的.下面有些资料是参考了网上的,总体概括下实现思路: 1.根据后台给出的m3u8的地址,实现播放,核 ...
- Android端M3U8视频下载管理器----M3U8Manger
转载请注明出处,大力哥的博客:http://blog.csdn.net/qq137722697 M3U8Manger (M3U8管理器) M3U8Manger ,android端M3U8文件下载管理器 ...
- iOS m3u8本地缓存播放(控制下载并发、暂停恢复)
一m3u8缓存播放的整个流程 二控制媒体下载的并发数 三控制单个媒体的切片下载并发数 四下载的中断和恢复 总结下任务生命周期中的任务状态变化 五注意的问题与思路延伸 一.m3u8缓存播放的整个流程 1 ...
- Android进阶之路 - 批量下载、缓存图片、视频
之前已经记录过,批量下载图片和缓存本地的方式,此篇主要记录批量下载图片.视频,同时缓存在本地的功能实现 关联篇 Android进阶之路 - 批量下载.缓存图片 Android进阶之路 - 批量下载.缓 ...
- Android进阶之路 - 批量下载、缓存图片
在日常项目开发中,关于图片批量下载,数据缓存的相关功能比比皆是,这次也是去年在项目中需要在本地缓存商品数据,所以用到了批量下载的功能,特此记录 ~ 关联篇 Android进阶之路 - 批量下载.缓存图 ...
- android 直播 app下载地址,蓝泡泡直播
蓝泡泡直播安卓app带你引领最新的直播潮流,更多精彩的节目,更加有趣的平台互动,全都可以在这里体验到,你可以随时随地的打开手机,观看美轮美奂的精彩节目,各种精彩节目让你看了还想看,每时每刻都有人陪伴你 ...
- Android电视直播 v5.6,龙龙直播app下载|龙龙直播apk2019官方版下载 v5.6.1 安卓版 - 数码资源网...
用手机看电视直播,首先你需要把龙龙直播app下载到手机上,龙龙直播apk2019官方版值得推荐,因为龙龙直播apk2019官方版支持全国各地的地方电视台的直播节目,而且都是高清的哦!同时APP支持手机 ...
- uniapp项目引入Dplayer.js以及hls.js用来解析播放m3u8直播流视频文件,文末有项目代码可供下载
1.下载依赖 npm i dplayer -S npm i hls.js -S 2.vue页面 <template><view class="content"&g ...
- 音视频开发之旅(51)-M3U8边缓存边播放
目录 MP4的"问题" m3u8是什么 m3u8的好处 源码分析 扩展思考:mp4能不能像m3u8一样进行分片缓存呐? 资料 收获 一.MP4的"问题" 我们上 ...
最新文章
- SpiderMonkey-让你的C++程序支持JavaScript脚本
- 如何理解clone对象
- python文件写入字典格式输出_Python把对应格式的csv文件转换成字典类型存储脚本的方法...
- Archive object standard check
- 【原创】MapReduce编程系列之表连接
- redis笔记——redis事务及锁应用
- LeetCode 97. 交错字符串(DP)
- 利用DAAB 获取存储过程返回值的方法
- 简单php web ftp服务器,php 上传文件到ftp服务器的简单示例(单文件)
- 一个js编写全选、弹出对话框、ajax-json的案例
- java sql小区物业管理系统_小区物业管理系统javasql.doc
- QT Libvlc播放视频时捕获鼠标和键盘事件
- 小米电视换鸿蒙,DIY 篇一:迟来的小米电视主机改造,完美增加红外接收(红外遥控)...
- 炒币碰到熊市的应对方法,炒币者的八大口诀
- python爬取豆瓣电影top250_【Python3爬虫教程】Scrapy爬取豆瓣电影TOP250
- DB DBS 和DBMS区别
- 使用JAVA调用U盾进行客户认证的total solution
- web服务器—nginx
- 电动机降压启动电路图全解
- SETI@home——在家搜寻外星人的计划