Skip to content
Engels Tercero edited this page Aug 6, 2025 · 4 revisions

📖 Welcome to The HlsKit Handbook

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.


🎯 What is HlsKit?

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.


🧠 Core Philosophy

  • 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.

🔧 Use Cases

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.

🌐 Supported Features (as of v0.3.0)

  • 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

🚧 Road to Native Bindings

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 Evolution

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.


🛠 Getting Started


🙌 Contribute

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.


📬 Stay Updated

Follow the project and its development by:

  • Watching the GitHub repo
  • Checking the Changelog
  • Participating in discussions and issues