1 Star 0 Fork 0

kaylee595 / m3u8Downloader

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
readme.md 4.76 KB
一键复制 编辑 原始数据 按行查看 历史

介绍

m3u8Downloader是用来下载m3u8视频的, 轻轻松松跑满全部带宽来进行下载~

  1. 支持并发下载媒体流
  2. 支持加密的媒体资源
  3. 媒体资源的合并
  4. 媒体资源转MP4.

相比m3u8Download:

  1. 整体进行重构, 将M3U8文件的解析逻辑抽离到模块(感兴趣可以在这里查看, 欢迎改进)
  2. 下载性能更加优越, 合理使用多路复用减少请求TCP创建的时间.

使用

在开始下载TS之前, 我们需要将M3U8文件下载到本地, 然后再去下载TS流, 这是两个步骤. 你可以自己手动下载好m3u8文件, 也可以使用软件自带的m3u8下载器来下载m3u8文件. 注意, 自己下载的m3u8文件务必确保m3u8文件中的资源链接是绝对地址.

下载M3U8文件

m3u8文件下载, 会自动转换m3u8数据中的相对路径为绝对路径.

Usage:
m3u8Downloader m3u8 {m3u8URL地址} [flags]

Flags:
-h, --help                help for m3u8
-o, --output string   输出的文件名(Default: 链接尾部的名称)

# Example
# 这将下载链接中的数据到"周处除三害.m3u8"
.\m3u8Downloader.exe m3u8 https://example.com/100.m3u8 -o "周处除三害"

下载M3U8视频

将m3u8中的所有媒体流全部下载到本地后合并成视频

Usage:
m3u8Downloader {m3u8文件} [flags]

Flags:
--config string   config file (default is currentDirectory/config.yaml)
-h, --help          help for m3u8Downloader

# Example
# 使用之前, 确保你已经在配置文件中配置好了ffmpeg路径, 如果没有, 将不会自动把下载好的媒体转为mp4.
# 这将下载"周处除三害.m3u8"中的媒体到当前目录下的media文件夹
# 全部媒体下载完后会自动合并成一个, 最后会调用ffmpeg将合并的媒体流转为mp4存储到mp4文件夹.
.\m3u8Downloader.exe "周处除三害.m3u8"

配置文件

在当前目录下创建一个config.yaml文件, 配置以下内容.

# concurrency 下载并发数量(默认为CPU核心数量)
# concurrency: 8
# streamMinKB 媒体的最小KB值, 用于过滤不完整/损坏的媒体流, 如果没有过滤可能导致生成的最终话音不一致.(默认不限制)
streamMinKB: 80
# proxy 下载时使用的代理, 这里请直接使用URL的格式, 也可以带上用户名和密码: http://user:pass@localhost:10809 (默认不使用代理)
proxy: http://localhost:10809
# referer 下载媒体流时, header添加的referer值.
#referer: https://example.com/
# refererConfig 下载媒体流时, header添加的referer值, 该配置可以动态的选择主域名相匹配的referer. 如果上面的referer配置已有的话, 该选项refererConfig无效.
#refererConfig:
#  example.com: "https://video.example.com/"
# 出错重试次数, 如果设置为3, 其总计下载次数为3. (默认0/1下载失败后不进行重试)
retry: 3
# 允许出错次数, 当有指定的媒体数量都下载出错时, 则认为该m3u8文件可能失效了, 终止下载, 设置该值时, 你需要能够接收部分媒体的丢失, 通常不会很多甚至不会丢失媒体资源. (默认0/1只要出错一个就直接终止)
allowError: 60
# ffmpeg文件路径, 将下载完成并合成后的媒体转换为mp4.(默认不进行转换)
#ffmpeg: C:\ffmpeg\ffmpeg.exe
# downloadTimeoutSecond 下载超时, 单位秒, 可以防止下载某个资源过久, 当下载过久直接判定为出错, 交给retry或allowError策略进行重新下载.(默认不限制, 一直等待到文件下载完成)
downloadTimeoutSecond: 50

清理视频

当你成功下载到MP4视频之后, 你会发现media目录下面的文件是多余的, 可以清理掉, 但是有时候手动清理太多视频比较麻烦, 因为你有可能需要一个个对比看看media中的文件夹中哪个是已经下载成功有MP4文件了, 可以借助这个命令来快速安全的删除.

.\m3u8Downloader.exe clean

执行命令后, 程序会扫描mp4文件夹下面下载成功的视频, 将扫描到的视频文件名对应的在media文件夹中进行匹配, 如果匹配到了, 程序会自动删除那些没用的媒体文件. 该命令只会删除media文件夹下的文件, 不会删除其他目录的文件, 可以放心大胆的执行!

联系我

在使用过程中遇到问题, 欢迎随时提问我, 你可以在Issues中留下你的问题或建议.
如果你有能力解决本仓库的BUG, 欢迎你在Pull Request中提交你的改进.

Go
1
https://gitee.com/kaylee595/m3u8Downloader.git
git@gitee.com:kaylee595/m3u8Downloader.git
kaylee595
m3u8Downloader
m3u8Downloader
master

搜索帮助