finds.dev← search

// the find

grafov/m3u8

★ 1,288 · Go · BSD-3-Clause · updated Sep 2025

Parser and generator of M3U8-playlists for Apple HLS. Library for Go language. :cinema: Moved to https://github.com/Eyevinn/hls-m3u8

A Go library for parsing and generating HLS M3U8 playlists, covering the spec through version 5. It handles both master and media playlists, encryption keys, Widevine tags, and custom tag extensions. The target audience is Go developers building video streaming infrastructure — transcoders, CDN tooling, HLS downloaders.

Three-file implementation (structure.go, reader.go, writer.go) keeps the surface area small and auditable. Custom tag support via the CustomTag/CustomDecoder interfaces is genuinely useful for the non-standard tags that real-world HLS deployments spray everywhere. Good test coverage with a suite of sample playlists covering edge cases like SCTE-35 cue points, Widevine, and byterange segments. BSD 3-clause license means it's actually usable in commercial products without friction.

Archived and read-only — support is suspended, the maintainer explicitly points you to Eyevinn/hls-m3u8 as the successor. HLS spec coverage stops at version 5, meaning anything added in v6–v12 (CMAF, LL-HLS low-latency extensions, interstitials) is missing entirely. The ring-buffer design for media playlists (fixed capacity at construction time) is awkward if you're building a live packager that doesn't know segment count upfront. Travis CI and Drone CI configs are dead artifacts at this point.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →