From 7f7c4525590aaf23bede063829097329c1534278 Mon Sep 17 00:00:00 2001 From: orestonce Date: Sun, 29 May 2022 18:28:42 +0800 Subject: [PATCH] note --- README.md | 17 +++++++---------- m3u8d-qt/screenshot.png | Bin 8819 -> 6271 bytes 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index bb88115..ba7ebe1 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,15 @@ ## m3u8d 一款m3u8下载工具 -* 提供windows图形界面(Qt), mac\linux命令行 -* 可选使用ffmpeg转换格式为mp4 -* windows自带GUI界面的版本下载: [m3u8d_qt_v1.0_windows_amd64.exe](https://github.com/orestonce/m3u8d/releases/download/v1.0/m3u8d_qt_v1.0_windows_amd64.exe): - +* 提供windows图形界面(Qt), mac\linux命令行, linux支持arm和386 +* 使用ffmpeg转换格式为mp4 +* windows自带GUI界面的版本下载: [m3u8d-qt_v1.1_windows_amd64.exe](https://github.com/orestonce/m3u8d/releases/download/v1.1/m3u8d-qt_v1.1_windows_amd64.exe): ![](m3u8d-qt/screenshot.png) -* 全部版本下载, 包括windows命令行/windows图形界面/linux命令行/mac命令行: https://github.com/orestonce/m3u8d/releases +* 全部版本下载, 包括windows图形界面/linux命令行/mac命令行: https://github.com/orestonce/m3u8d/releases ## 实现说明 * download.go 大部分抄自 https://github.com/llychao/m3u8-downloader -* 将ffmpeg直接编译进windows的二进制了,如果在PATH里没有找到ffmpeg.exe - 又需要使用ffmpeg进行转码, 则自动将二进制里的ffmpeg解压到系统临时目录,然后使用. - 因此windows版本的可执行文件达到了32MB, 带Qt ui的可执行文件达到了惊人的 50MB -* linux/mac的二进制没有内置ffmpeg, 可执行文件小很多,约为 8.6MB -* 支持不使用ffmpeg合并,直接将ts文件拼接起来 +* 将ffmpeg直接编译进windows/linux-arm/linux-386/darwin的二进制了. + 转换mp4时,会自动将二进制里的ffmpeg解压到系统临时目录,然后使用. + 因此linux/mac版本的可执行文件达到了32MB, 带Qt ui的可执行文件达到了惊人的 50MB * 支持跳过前面几个ts文件(一般是广告, 嘿嘿) * 程序会在下载保存目录创建: * downloading/ 目录, 用于存放正在下载的分段ts视频, 按照m3u8的url进行划分 diff --git a/m3u8d-qt/screenshot.png b/m3u8d-qt/screenshot.png index 897ca68d9eb683e6fb01608bc26e704ba2c2ef80..32f5d559e2c35be18f03d680e4ac6eb6ed56cfbb 100644 GIT binary patch literal 6271 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 literal 8819 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