一个Go写的M3U8下载器,548星,三条命令搞定TS流下载合并

一个Go写的M3U8下载器,548星,三条命令搞定TS流下载合并

最近在GitHub上看到oopsguy写的m3u8项目,一个Go语言写的M3U8视频流下载器。548颗星,代码量不大,但功能做得实在,专门下载和合并TS视频流文件。

我之前下载在线视频,经常碰到M3U8格式。浏览器插件能应付简单情况,但遇到加密的TS切片或者需要合并成完整文件时,插件就不好使了。这个工具正好填了这个空档。

正文顶部截图

三个参数,一行命令就能跑

核心参数就三个:u指定M3U8地址,o指定输出目录,c控制并发下载数。终端里一行搞定:

./m3u8 -u=http://example.com/index.m3u8 -o=/data/example

Windows PowerShell下同样直接:

.\m3u8.exe -u="http://example.com/index.m3u8" -o="D:\data\example"

Go编译出来是单文件二进制,没有外部依赖,拷到任何机器上都能直接跑。Windows、macOS、Linux全平台都支持。

参数设计上,下载器会自动解析M3U8文件里的TS切片列表,逐个下载,最后合并成一个完整的TS文件。整个过程不需要人工干预。

README区域截图

五个功能,刚好够用

功能列表不长,但每个都踩在实际需求上:

  1. 下载并解析M3U8(只支持VOD点播,不支持直播流)
  2. TS下载失败自动重试,网络不稳定时能减少手动操作
  3. 解析Master Playlist,自动选择最佳码率
  4. 解密TS切片,AES-128加密的也能处理
  5. 合并所有TS文件,输出完整视频

解密和合并这两个环节,很多在线下载工具做不好。m3u8把解密流程内置了,不需要手动指定key文件。

实际用起来怎么样

下载速度取决于网络和并发数。用c参数调高并发,带宽够的情况下能跑满。下载失败的TS切片会自动重试,网络偶尔抖动不会导致整个下载中断。

遇到Master Playlist(一套包含多条不同码率子流的索引文件),工具会自动解析,选最高码率的那条流来下载。不用自己翻M3U8文件内容去手动挑。

和ffmpeg比有什么不同

聊到M3U8下载,很多人第一反应是用ffmpeg。ffmpeg功能全面,但命令参数多,对新手不够友好。m3u8只做一件事:你给M3U8地址,它给你完整视频,流程直接,不用记一堆参数。

另外ffmpeg处理加密M3U8时需要手动指定key文件路径,步骤一多就容易出错。m3u8把密钥解析和解密过程自动化了。

谁适合用

需要批量下载在线课程视频、经常跟M3U8流打交道的朋友可以试试。Go编译出来的二进制体积小、启动快,放到服务器上定时跑也很合适。

局限也有:不支持HLS直播流;不支持自定义HTTP Header,遇到需要Referer验证的链接可能搞不定。但日常M3U8下载场景够用了。

有Go环境的直接go run跑源码,没有就去下载编译好的二进制文件,解压即用。MIT协议开源。

posted @ 2026-06-13 16:25  techfusion55  阅读(20)  评论(0)    收藏  举报