// the find
oopsguy/m3u8
A mini M3U8 downloader written in Golang for downloading and merging TS(Transport Stream) files. 一个迷你 M3U8 视频下载工具。
A small Go command-line tool that takes an HLS playlist URL, follows a master playlist down to the media playlist, downloads the TS segments, decrypts them if needed, and concatenates them into one .ts file. It is for someone who has an m3u8 URL and wants the video without wiring ffmpeg by hand.
- The layout is clean for a repo this size: parse/ handles playlist parsing, dl/ handles the download loop, and tool/ holds the crypto and HTTP helpers. The whole thing is readable in one sitting.
- Decryption lives in its own file (tool/crypt.go) with a test file next to it, along with tests for http and util. Most projects this small don't bother.
- It resolves master playlists itself, so you pass the top-level URL instead of digging out the variant playlist URL by hand.
- It builds to a single Go binary with no runtime dependencies, which is why the release packages work on Linux, macOS and Windows without setup.
- The last push was June 2022 and nothing has landed since. There is no sign that the HLS edge cases of the last four years have been picked up.
- The output is a plain concatenation of TS segments. Any stream whose segments aren't self-contained MPEG-TS, such as fMP4/CMAF with an init segment, will produce a broken file without changes to the merge step.
- None of the files under parse/ or dl/ in the tree is a test file. The parser and the retry logic appear to be verified only by running them against live streams.