From 3810f171a9004651cc2568b943ebdcb5039b9573 Mon Sep 17 00:00:00 2001 From: orestonce Date: Tue, 28 Jun 2022 20:55:59 +0800 Subject: [PATCH 1/8] Update README.md --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index fcd5390..9bafc6b 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ ## m3u8视频下载工具 * 提供windows图形界面(Qt), mac、linux命令行, linux支持arm、386、mipsle * 程序会自动将下载的ts文件合并转换格式为mp4 -* windows自带GUI界面的版本下载: [m3u8d_qt_v1.5.0_windows_amd64.exe](https://github.com/orestonce/m3u8d/releases/download/v1.5.0/m3u8d_qt_v1.5.0_windows_amd64.exe): +* windows自带GUI界面的版本下载: [m3u8d_qt_v1.5.1_windows_amd64.exe](https://github.com/orestonce/m3u8d/releases/download/v1.5.1/m3u8d_qt_v1.5.1_windows_amd64.exe): ![](m3u8d-qt/screenshot.png) * 全部版本下载, 包括windows图形界面/linux命令行/mac命令行: https://github.com/orestonce/m3u8d/releases @@ -25,7 +25,6 @@ * [x] 增加openwrt路由器的mipsle二进制 * [x] 支持从curl命令解析出需要的信息,正如 https://github.com/cxjava/m3u8-downloader 一样 * [ ] 增加linux/mac命令行版本的使用教程 - * [ ] url识别错误,http://example.com/index.m3u8?arg1=v1 也是正常的m3u8的url ## 二次开发操作手册: * 如果只开发命令行版本, 则只需要修改*.go文件, 然后编译 cmd/main.go 即可 * 如果涉及到Qt界面打包, 则需要运行 export/main.go 将 *.go导出为Qt界面需要的 From 7493ba16af64bf11ff4fd13306b9f5e927878341 Mon Sep 17 00:00:00 2001 From: orestonce Date: Mon, 11 Jul 2022 08:55:31 +0800 Subject: [PATCH 2/8] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 9bafc6b..ad366db 100644 --- a/README.md +++ b/README.md @@ -32,3 +32,4 @@ ## 发布协议 * m3u8d-qt/ 目录采用 [GPL协议 v3](m3u8d-qt/LICENSE) 发布 * 除 m3u8d-qt/ 以外的代码, 采用[MIT协议](LICENSE)发布 +## 本项目由 jetbrains 开源开发许可证-社区版([Licenses for Open Source Development](https://jb.gg/OpenSourceSupport)) 提供goland开发支持 From 38d3d7c23d9f7a09cd071207eecb6b760457dd60 Mon Sep 17 00:00:00 2001 From: orestonce Date: Mon, 11 Jul 2022 09:03:36 +0800 Subject: [PATCH 3/8] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index ad366db..2125c4e 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ * [x] 增加openwrt路由器的mipsle二进制 * [x] 支持从curl命令解析出需要的信息,正如 https://github.com/cxjava/m3u8-downloader 一样 * [ ] 增加linux/mac命令行版本的使用教程 + * [ ] 支持多国语言 ## 二次开发操作手册: * 如果只开发命令行版本, 则只需要修改*.go文件, 然后编译 cmd/main.go 即可 * 如果涉及到Qt界面打包, 则需要运行 export/main.go 将 *.go导出为Qt界面需要的 From 25f82fa14d1153832e189a926bf965e62a02939e Mon Sep 17 00:00:00 2001 From: orestonce Date: Tue, 12 Jul 2022 09:45:25 +0800 Subject: [PATCH 4/8] Update README.md --- README.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 2125c4e..796a896 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,14 @@ + ## m3u8视频下载工具 +* 没有ffmpeg依赖, 不需要单独配置任何环境 * 提供windows图形界面(Qt), mac、linux命令行, linux支持arm、386、mipsle * 程序会自动将下载的ts文件合并转换格式为mp4 * windows自带GUI界面的版本下载: [m3u8d_qt_v1.5.1_windows_amd64.exe](https://github.com/orestonce/m3u8d/releases/download/v1.5.1/m3u8d_qt_v1.5.1_windows_amd64.exe): ![](m3u8d-qt/screenshot.png) * 全部版本下载, 包括windows图形界面/linux命令行/mac命令行: https://github.com/orestonce/m3u8d/releases - +* linux/mac版的命令行使用教程 + * 普通下载命令 `./m3u8d download -u https://example.com/index.m3u8` + * curl模式: `./m3u8d curl 'https://example.com/index.m3u8' -H 'cookie: CONSENT=YES'` ## 实现说明 * download.go 大部分抄自 https://github.com/llychao/m3u8-downloader * 使用[gomedia](https://github.com/yapingcat/gomedia) 代替ffmpeg进行格式转换 @@ -16,6 +20,7 @@ * 将M3u8Url+SkipTsCountFromHead进行hash, 得到文件下载id * 将文件下载id/文件大小/文件内容hash 储存在 m3u8_cache.cdb里面, 下载前搜索下载目录 如果发现某个文件大小/文件内容hash和以前的记录相等,则认为这个文件是以前下载的文件, 跳过此次下载. + ## TODO: * [x] 如果不是m3u8样子的URL,自动下载html下来、搜索其中的m3u8链接进行下载 * [x] windows、linux、mac都支持转换、合并ts格式为mp4 @@ -24,7 +29,6 @@ * [x] 支持设置代理 * [x] 增加openwrt路由器的mipsle二进制 * [x] 支持从curl命令解析出需要的信息,正如 https://github.com/cxjava/m3u8-downloader 一样 - * [ ] 增加linux/mac命令行版本的使用教程 * [ ] 支持多国语言 ## 二次开发操作手册: * 如果只开发命令行版本, 则只需要修改*.go文件, 然后编译 cmd/main.go 即可 @@ -33,4 +37,5 @@ ## 发布协议 * m3u8d-qt/ 目录采用 [GPL协议 v3](m3u8d-qt/LICENSE) 发布 * 除 m3u8d-qt/ 以外的代码, 采用[MIT协议](LICENSE)发布 -## 本项目由 jetbrains 开源开发许可证-社区版([Licenses for Open Source Development](https://jb.gg/OpenSourceSupport)) 提供goland开发支持 +## 开发支持 + * 本项目由 jetbrains 开源开发许可证-社区版([Licenses for Open Source Development](https://jb.gg/OpenSourceSupport)) 提供goland开发支持 From f34f226925df6f5f06dc01cec2764322ed4984dc Mon Sep 17 00:00:00 2001 From: orestonce Date: Tue, 12 Jul 2022 11:35:56 +0800 Subject: [PATCH 5/8] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 796a896..08a1373 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ * [x] 支持设置代理 * [x] 增加openwrt路由器的mipsle二进制 * [x] 支持从curl命令解析出需要的信息,正如 https://github.com/cxjava/m3u8-downloader 一样 + * [ ] 支持从一个txt里读取下载列表,批量下载 * [ ] 支持多国语言 ## 二次开发操作手册: * 如果只开发命令行版本, 则只需要修改*.go文件, 然后编译 cmd/main.go 即可 From 548058190593f80383a0dc7878437edf5efd2001 Mon Sep 17 00:00:00 2001 From: orestonce Date: Wed, 13 Jul 2022 11:39:49 +0800 Subject: [PATCH 6/8] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 08a1373..8afd3c0 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ * [x] 增加openwrt路由器的mipsle二进制 * [x] 支持从curl命令解析出需要的信息,正如 https://github.com/cxjava/m3u8-downloader 一样 * [ ] 支持从一个txt里读取下载列表,批量下载 + * [ ] 显示下载速度、合并ts的速度 * [ ] 支持多国语言 ## 二次开发操作手册: * 如果只开发命令行版本, 则只需要修改*.go文件, 然后编译 cmd/main.go 即可 From ee3a87d4cf3e2aee595c555cf05fe82d765bc849 Mon Sep 17 00:00:00 2001 From: orestonce Date: Sun, 17 Jul 2022 20:06:18 +0800 Subject: [PATCH 7/8] Update README.md --- README.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/README.md b/README.md index 8afd3c0..12cde54 100644 --- a/README.md +++ b/README.md @@ -41,3 +41,21 @@ * 除 m3u8d-qt/ 以外的代码, 采用[MIT协议](LICENSE)发布 ## 开发支持 * 本项目由 jetbrains 开源开发许可证-社区版([Licenses for Open Source Development](https://jb.gg/OpenSourceSupport)) 提供goland开发支持 + * 感谢 [gomedia](https://github.com/yapingcat/gomedia) 开发者提供的ts转mp4逻辑 + +---------------------------------- +## 关于为什么使用 gomedia 替代 ffmpeg +### 引入ffmpeg很麻烦, 原因列表: +1. ffmpeg开源协议是 GPL的,具有传染性, 这个项目的主要逻辑就不能使用 MIT 开源了 +2. 如果使用cgo调用的形式引入ffmpeg + * 最终二进制体积特别大 + * 编译mac/linux/路由器 版本的时候必然要依赖对应的跨平台编译器, 编译难度提升 +3. 如果使用内嵌 静态编译的ffmpeg二进制, 使用的时候释放到 临时目录再调用命令行 + * 最终二进制体积会更大, 可以看[以前的v1.1版本](https://github.com/orestonce/m3u8d/releases/tag/v1.1) , 每个最终二进制都比现在大25MB左右 + * 没找到mipsle路由器版本的静态编译的ffmpeg +4. 如果直接调用ffmpeg命令, 必定依赖于用户必须首先安装ffmpeg到操作系统, 难用 +### 引入MIT协议的gomedia解决ts转换成mp4好处 +1. gomedia是纯go代码, 跨平台编译容易 +2. 本项目也可以使用MIT协议进行开源, 无需限定为GPL/LGPL +3. 最终二进制体积特别小, linux/mac 版本的命令行版本才 5-7MB, windows由于有静态编译进来的qt界面, 现在体积有26MB +4. 用户无需预先安装ffmpeg, 降低用户的使用难度 From 947495b3d1dfee106a158bcd56c0c20ef7ea1798 Mon Sep 17 00:00:00 2001 From: orestonce Date: Sun, 17 Jul 2022 20:07:27 +0800 Subject: [PATCH 8/8] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 12cde54..410be5e 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ 3. 如果使用内嵌 静态编译的ffmpeg二进制, 使用的时候释放到 临时目录再调用命令行 * 最终二进制体积会更大, 可以看[以前的v1.1版本](https://github.com/orestonce/m3u8d/releases/tag/v1.1) , 每个最终二进制都比现在大25MB左右 * 没找到mipsle路由器版本的静态编译的ffmpeg -4. 如果直接调用ffmpeg命令, 必定依赖于用户必须首先安装ffmpeg到操作系统, 难用 +4. 如果直接调用ffmpeg命令, 用户则必须首先安装ffmpeg到操作系统, 难用 ### 引入MIT协议的gomedia解决ts转换成mp4好处 1. gomedia是纯go代码, 跨平台编译容易 2. 本项目也可以使用MIT协议进行开源, 无需限定为GPL/LGPL