-
Notifications
You must be signed in to change notification settings - Fork 1
Home
HlsKit is a modern, Rust-based library designed to make working with streaming media—particularly HTTP Live Streaming (HLS)—simple, flexible, and production-ready.
Whether you’re building a VOD platform, a live broadcasting pipeline, or a streaming backend for custom applications, HlsKit provides a robust toolkit that abstracts the complexities of video processing with FFmpeg and GStreamer, while offering developers full control and extensibility.
HlsKit is a high-level abstraction layer for video streaming pipelines, purpose-built in Rust. It supports HLS packaging, transcoding, resolution switching, encryption, and media introspection—all through a consistent and ergonomic API.
The library is structured around backend modularity and is evolving to support both CLI-based tools and native bindings for FFmpeg and GStreamer.
- ✅ High-level abstraction with strong Rust idioms.
- 🧩 Composable pipelines for flexible processing.
- 🔄 Multiple backends (FFmpeg, GStreamer—CLI and native).
- ⚙️ Feature flag–driven architecture for maximum control.
- 🔒 Secure and safe streaming with optional encryption support.
- 🚀 Performance-oriented, suitable for real-time workflows.
HlsKit is ideal for:
- Creating adaptive HLS streams from video files.
- Building video processing pipelines (transcoding, resizing, fragmenting).
- Integrating FFmpeg or GStreamer into Rust applications without boilerplate.
- Embedding custom video logic in media servers, edge computing nodes, or serverless workers.
- HLS packaging (master + variants)
- Multi-resolution encoding
- AES-128 encryption support
- CLI-based FFmpeg & GStreamer support
- Experimental
zenpulse-api(modern idiomatic API) - Modular design with backend switching
- Graceful error handling and typed results
A major milestone for HlsKit is the integration of native FFmpeg and GStreamer bindings, available under the native-binding feature. This eliminates shelling out to CLI tools and provides:
- Greater reliability
- Better cross-platform support
- Easier integration with other async Rust systems
- Lower latency and better diagnostics
Read more about the roadmap in the 📅 Project Board & Roadmap
| API Style | Status | Feature Flag |
|---|---|---|
| Classic API | Current, Supported, legacy | legacy-api |
| Zenpulse API | Optional, Modern, preferred | zenpulse-api |
All new features are now introduced under the Zenpulse API. The classic API will remain supported until v0.5.0, and will be removed in v0.6.0.
HlsKit is community-friendly and open to contributors. Whether you're fixing typos, improving documentation, or working on a new backend, your contributions are welcome!
Start with the Contributing Guide or open a Discussion.
Follow the project and its development by:
- Watching the GitHub repo
- Checking the Changelog
- Participating in discussions and issues