finds.dev← search

// the find

futzu/threefive

★ 160 · Python · MIT · updated Nov 2024

threefive is SCTE-35. threefive Parses SCTE-35 in every available format. MPEGTS, HLS, DASH. Yes.

threefive is a Python library and CLI for parsing, decoding, and encoding SCTE-35 ad splice signals from MPEG-TS, HLS, and DASH streams. It covers the full spec: binary, base64, hex, XML, multicast, and sidecar files. If you work in broadcast or streaming ad insertion, this is the most complete open-source SCTE-35 implementation available in Python.

The bidirectional support is real — you can decode an incoming cue and re-encode a modified version back to binary, which most SCTE-35 tools can't do. The Stream class handles multi-program MPEG-TS over UDP and multicast with zero-packet-loss claimed and tested on actual BSD/Linux boxes, not just local files. The sixfix utility solving the ffmpeg 0x06/0x86 stream type corruption problem is a specific, sharp tool for a real production pain point. The custom private splice descriptor support is done correctly — tag, length, identifier, private data — rather than just ignoring unknown descriptor types.

The documentation is scattered across a dozen .md files linked from the README with no clear order; finding how to do something specific requires hunting through multiple files and the Python shell help. The odd/even version numbering scheme for stable/unstable releases is non-standard and easy to miss — you can accidentally install a testing build from PyPI. No async support: the Stream class blocks, so you can't integrate it into an async event loop without threading. The DASH/SCTE-214 XML support is explicitly labeled experimental and has been for a while, which matters if you're building a production DASH pipeline.

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 →