#mp4 #parser #media #iso #base #format #api

mp4parse_capi

ISO基本媒体文件格式(mp4)解析器

15 个版本 (8 个破坏性更新)

0.17.0 2023年5月29日
0.12.0 2021年10月22日
0.11.5 2021年1月19日
0.11.2 2018年12月10日
0.6.0 2016年11月1日

#1238 in 解析器实现

MPL-2.0 许可证

365KB
8K SLoC

mp4parse-capi 是一个 C API,用于暴露 mp4parse 的功能。有关详细信息,请参阅 mp4parse-rust 仓库中的 README


lib.rs:

mp4parse 模块的 C API。

解析 ISO 基本媒体格式(即 video/mp4 流)。

示例

use std::io::Read;

extern fn buf_read(buf: *mut u8, size: usize, userdata: *mut std::os::raw::c_void) -> isize {
   let mut input: &mut std::fs::File = unsafe { &mut *(userdata as *mut _) };
   let mut buf = unsafe { std::slice::from_raw_parts_mut(buf, size) };
   match input.read(&mut buf) {
       Ok(n) => n as isize,
       Err(_) => -1,
   }
}
let capi_dir = std::env::var("CARGO_MANIFEST_DIR").unwrap();
let mut file = std::fs::File::open(capi_dir + "/../mp4parse/tests/minimal.mp4").unwrap();
let io = mp4parse_capi::Mp4parseIo {
    read: Some(buf_read),
    userdata: &mut file as *mut _ as *mut std::os::raw::c_void
};
let mut parser = std::ptr::null_mut();
unsafe {
    let rv = mp4parse_capi::mp4parse_new(&io, &mut parser);
    assert_eq!(rv, mp4parse_capi::Mp4parseStatus::Ok);
    assert!(!parser.is_null());
    mp4parse_capi::mp4parse_free(parser);
}

依赖关系

~665KB
~11K SLoC