|
| 1 | +# M3U8Downloader |
| 2 | +M3U8下载器,支持多线程下载、断点续传、后台下载、本地播放解决方案、m3u8加密解决方案 |
| 3 | +# 依赖 |
| 4 | + |
| 5 | +``` |
| 6 | +allprojects { |
| 7 | + repositories { |
| 8 | + ... |
| 9 | + maven { url 'https://jitpack.io' } |
| 10 | + } |
| 11 | + } |
| 12 | + |
| 13 | +dependencies { |
| 14 | + compile 'com.github.Jay-Goo:M3U8Downloader:V1.0.5' |
| 15 | + } |
| 16 | +``` |
| 17 | + |
| 18 | +# 用法 |
| 19 | +### 配置 |
| 20 | +* default Config: |
| 21 | +``` |
| 22 | +M3U8DownloaderConfig |
| 23 | + .build(getApplicationContext()) |
| 24 | + .setSaveDir(dirPath) |
| 25 | + ; |
| 26 | +``` |
| 27 | +* Custom Config: |
| 28 | +``` |
| 29 | +M3U8DownloaderConfig |
| 30 | + .build(getApplicationContext()) |
| 31 | + .setSaveDir(dirPath) |
| 32 | + .setConnTimeout(10000) |
| 33 | + .setReadTimeout(10000) |
| 34 | + .setThreadCount(3) |
| 35 | + .setDebugMode(true) |
| 36 | + ; |
| 37 | +``` |
| 38 | + |
| 39 | +### 单例 |
| 40 | +`M3U8Downloader.getInstance()` |
| 41 | + |
| 42 | +### 下载 |
| 43 | + `download(String url)` |
| 44 | + |
| 45 | +### 暂停 |
| 46 | + `pause(String url)` |
| 47 | + |
| 48 | +### 取消任务、取消任务并删除文件缓存 |
| 49 | + `cancel(String url)` |
| 50 | + |
| 51 | +`cancelAndDelete(final String url, final OnDeleteTaskListener listener)` |
| 52 | + |
| 53 | +### 下载监听 |
| 54 | + |
| 55 | +``` |
| 56 | + M3U8Downloader.getInstance().setOnM3U8DownloadListener(onM3U8DownloadListener); |
| 57 | +
|
| 58 | +private OnM3U8DownloadListener onM3U8DownloadListener = new OnM3U8DownloadListener() { |
| 59 | +
|
| 60 | + @Override |
| 61 | + public void onDownloadItem(M3U8Task task, long itemFileSize, int totalTs, int curTs) { |
| 62 | + super.onDownloadItem(task, itemFileSize, totalTs, curTs); |
| 63 | + //下载切片监听,非UI线程 |
| 64 | + } |
| 65 | +
|
| 66 | + @Override |
| 67 | + public void onDownloadSuccess(M3U8Task task) { |
| 68 | + super.onDownloadSuccess(task); |
| 69 | + //下载成功 |
| 70 | + } |
| 71 | +
|
| 72 | + @Override |
| 73 | + public void onDownloadPending(M3U8Task task) { |
| 74 | + super.onDownloadPending(task); |
| 75 | + //加入队列,任务挂起 |
| 76 | + } |
| 77 | +
|
| 78 | + @Override |
| 79 | + public void onDownloadPause(M3U8Task task) { |
| 80 | + super.onDownloadPause(task); |
| 81 | + //任务暂停 |
| 82 | + } |
| 83 | +
|
| 84 | + @Override |
| 85 | + public void onDownloadProgress(final M3U8Task task) { |
| 86 | + super.onDownloadProgress(task); |
| 87 | + //下载进度,非UI线程 |
| 88 | + } |
| 89 | +
|
| 90 | + @Override |
| 91 | + public void onDownloadPrepare(final M3U8Task task) { |
| 92 | + super.onDownloadPrepare(task); |
| 93 | + //准备下载 |
| 94 | + } |
| 95 | +
|
| 96 | + @Override |
| 97 | + public void onDownloadError(final M3U8Task task, Throwable errorMsg) { |
| 98 | + super.onDownloadError(task, errorMsg); |
| 99 | + //下载错误,非UI线程 |
| 100 | + } |
| 101 | +
|
| 102 | + }; |
| 103 | +``` |
| 104 | + |
| 105 | +### M3U8Task |
| 106 | + |
| 107 | +``` |
| 108 | + private String url; //下载链接 |
| 109 | + private int state = M3U8TaskState.DEFAULT; //下载状态 |
| 110 | + private long speed; //下载速度 |
| 111 | + private float progress; //下载进度 |
| 112 | + private M3U8 m3U8; //下载成功后得到 |
| 113 | +``` |
| 114 | +### 加密 |
| 115 | +加密后视频切片文件名乱序,并移除后缀。 |
| 116 | +``` |
| 117 | +//设置密匙 |
| 118 | +M3U8Downloader.getInstance().setEncryptKey(encryptKey); |
| 119 | +//获取随机密匙 |
| 120 | +AES128Utils.getAESKey() |
| 121 | +``` |
| 122 | + |
| 123 | +更多加密解密 [M3U8EncryptHelper](https://github.com/Jay-Goo/M3U8Downloader/blob/master/library/src/main/java/jaygoo/library/m3u8downloader/M3U8EncryptHelper.java) |
| 124 | + |
| 125 | +### 本地播放 |
| 126 | +普通未加密请使用 [M3U8HttpServer](https://github.com/Jay-Goo/M3U8HttpServer) |
| 127 | + |
| 128 | + 加密请参考 [EncryptM3U8Server](https://github.com/Jay-Goo/M3U8Downloader/blob/master/app/src/main/java/jaygoo/m3u8downloader/EncryptM3U8Server.java) |
| 129 | + |
| 130 | +具体使用样例参考 [FullScreenActivity](https://github.com/Jay-Goo/M3U8Downloader/blob/master/app/src/main/java/jaygoo/m3u8downloader/FullScreenActivity.java) |
| 131 | + |
| 132 | +# 致谢 |
| 133 | +[huangdali - M3U8Manger](https://github.com/huangdali/M3U8Manger) |
0 commit comments