| Crates.io | h264-parser |
| lib.rs | h264-parser |
| version | 0.2.0 |
| created_at | 2025-09-03 02:46:18.290132+00 |
| updated_at | 2025-09-03 02:58:42.018785+00 |
| description | H.264 Annex B stream parser library |
| homepage | |
| repository | https://github.com/therishidesai/h264-parser |
| max_upload_size | |
| id | 1821960 |
| size | 268,141 |
A Rust library for parsing H.264 Annex B bitstreams. This library provides zero-copy parsing of NAL units, parameter sets (SPS/PPS), slice headers, and access unit assembly.
Add to your Cargo.toml:
[dependencies]
h264-parser = "0.1.0"
Basic example:
use h264_parser::AnnexBParser;
use std::fs::File;
use std::io::Read;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut file = File::open("video.h264")?;
let mut buffer = Vec::new();
file.read_to_end(&mut buffer)?;
let mut parser = AnnexBParser::new();
parser.push(&buffer);
while let Ok(Some(au)) = parser.next_access_unit() {
println!("Frame: keyframe={}", au.is_keyframe());
if let Some(ref sps) = au.sps {
println!(" Resolution: {}x{}", sps.width, sps.height);
}
for nal in au.nals() {
println!(" NAL: {:?}", nal.nal_type);
}
}
Ok(())
}
The library is organized into the following modules:
This is a parsing-only library that: