# m3u8Downloader **Repository Path**: kaylee595/m3u8Downloader ## Basic Information - **Project Name**: m3u8Downloader - **Description**: m3u8视频下载器 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-03-14 - **Last Updated**: 2025-02-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 介绍 m3u8Downloader是用来下载m3u8视频的, 轻轻松松跑满全部带宽来进行下载~ 1. 支持并发下载媒体流 2. 支持加密的媒体资源 3. 媒体资源的合并 4. 媒体资源转MP4. 相比[m3u8Download](https://gitee.com/kaylee595/m3u8-download): 1. 整体进行重构, 将M3U8文件的解析逻辑抽离到模块([感兴趣可以在这里查看, 欢迎改进](https://gitee.com/kaylee595/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: 链接尾部的名称) ```shell # 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
```shell # Example # 使用之前, 确保你已经在配置文件中配置好了ffmpeg路径, 如果没有, 将不会自动把下载好的媒体转为mp4. # 这将下载"周处除三害.m3u8"中的媒体到当前目录下的media文件夹 # 全部媒体下载完后会自动合并成一个, 最后会调用ffmpeg将合并的媒体流转为mp4存储到mp4文件夹. .\m3u8Downloader.exe "周处除三害.m3u8" ``` #### 配置文件 在当前目录下创建一个`config.yaml`文件, 配置以下内容. ```yaml concurrency: 16 # 并发数量, 默认为CPU核心数量 ffmpegBinFilename: "" # ffmpeg文件路径, 为空时, 将不自动将TS合并后的视频转为MP4 retryOfNum: 3 # 下载失败重试次数, 默认0, 不进行重试 allowErrorOfNum: 60 # 允许出错数, 默认0, 出现错误将终止下载 proxyAddr: "" # 代理地址, 为空不使用代理, 格式参考:http://localhost:10809 downloadTimeoutSecond: 0 # 下载超时(秒), lte 0时, 该值等同于50, 该值默认即为50. tsMinKB: 20 # 下载的TS最小体积, 如果小于设定的值表示下载失败, 默认0, 不对TS大小进行限制 # refererConfigs 发起请求时为请求添加Referer协议头, 将根据配置自动选择对应的referer地址, 其中rule是正则表达式 refererConfigs: - rule: ^www\.example\.com$ referer: https://www.example.com/ # userAgent 发起请求时为请求添加UserAgent协议头, 为空时, 不添加 User-Agent 协议头 userAgent: "" ``` #### 清理视频 当你成功下载到MP4视频之后, 你会发现media目录下面的文件是多余的, 可以清理掉, 但是有时候手动清理太多视频比较麻烦, 因为你有可能需要一个个对比看看media中的文件夹中哪个是已经下载成功有MP4文件了, 可以借助这个命令来快速安全的删除. ```shell .\m3u8Downloader.exe clean ``` 执行命令后, 程序会扫描`mp4`文件夹下面下载成功的视频, 将扫描到的视频文件名对应的在`media`文件夹中进行匹配, 如果匹配到了, 程序会自动删除那些没用的媒体文件. 该命令只会删除`media`文件夹下的文件, 不会删除其他目录的文件, 可以放心大胆的执行! ### 联系我 在使用过程中遇到问题, 欢迎随时提问我, 你可以在[Issues](https://gitee.com/kaylee595/m3u8Downloader/issues)中留下你的问题或建议.
如果你有能力解决本仓库的BUG, 欢迎你在[Pull Request](https://gitee.com/kaylee595/m3u8Downloader/pulls)中提交你的改进.