flv-core
Status: early development (
0.x). Not recommended for production; public APIs may change without notice. Part of the Mediaway media stack.
Sans-IO FLV (Flash Video) tag framing: the file header and the tag /
PreviousTagSize structure, incrementally. FLV tags are independently appendable — the
muxer has no finish() — and the demuxer is a byte-boundary-safe
push_bytes/poll_tag reader. Codec-specific sub-framing inside a tag's payload
(AudioTagHeader/VideoTagHeader) stays opaque here; mediaway-container::flv builds
and reads those bytes. No I/O in the core.
Quick start
use ;
let mut muxer = new;
let mut flv = Vecnew;
muxer.write_header; // has_audio, has_video
muxer.write_tag?;
let mut demuxer = new;
demuxer.push_bytes;
while let Some = demuxer.poll_tag?
Status
Status marks: ✅ first-class (tests for claimed scope) · ⚡ Zero-Copy path (no payload copy; implies ✅) · 🆗 best-effort / prototype · 🛠️ planned · ❌ attempted and genuinely blocked · 👻 not exercisable yet (no hardware / device / session available)
| Area | Status | Notes |
|---|---|---|
| Mux (file header + tags, self-trailing sizes) | ✅ | No finish() — tags are appendable |
Demux (incremental, boundary-safe DataOffset) |
✅ | Tested byte-by-byte across header/tag boundaries |
Codec sub-framing (AACPacketType, AVCPacketType, CTS) |
🛠️ | Tag::data stays opaque here; mediaway-container::flv handles it |
| Script data (AMF0/AMF3) parsing | 🛠️ | Framed but not decoded |
Docs
docs/roadmap.md— stages, deferred items, design decisionsmediaway-container— Mediaway-typedflvsurface over this crate- Root README — container support matrix
Contributing
Contributions are welcome — open an issue or pull request at github.com/nyxways/mediaway.
License
MIT OR Apache-2.0.