flv-core 0.1.1

Sans-IO FLV (Flash Video) tag mux and demux
Documentation
  • Coverage
  • 100%
    16 out of 16 items documented0 out of 0 items with examples
  • Size
  • Source code size: 34.69 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 575.43 kB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 10s Average build duration of successful builds.
  • all releases: 9s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • nyxways/mediaway
    1 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • dev-nyxie

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 flv_core::{Demuxer, Muxer, Tag, TagType};

let mut muxer = Muxer::new();
let mut flv = Vec::new();
muxer.write_header(true, true, &mut flv); // has_audio, has_video
muxer.write_tag(&Tag {
    tag_type: TagType::Video,
    timestamp_ms: 0,
    data: flv_tag_body.into(),
}, &mut flv)?;

let mut demuxer = Demuxer::new();
demuxer.push_bytes(&flv);
while let Some(tag) = demuxer.poll_tag()? { /* tag.tag_type, tag.data */ }

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

Contributing

Contributions are welcome — open an issue or pull request at github.com/nyxways/mediaway.

License

MIT OR Apache-2.0.