1 个不稳定版本
0.1.0 | 2021 年 2 月 15 日 |
---|
#5 in #flv
34KB
572 行
flvparse
一个用 Rust 编写的带有 nom 的 FLV 格式解析库。
使用说明
快速开始
[dependencies]
flvparse = "0.1"
fn main() {
let bytes = include_bytes!("assets/test.flv");
let flv = flvparse::FlvFile::parse(bytes).unwrap();
// ...
}
示例
请参阅示例获取详细信息。
cd cmd
cargo run -- --input ../assets/test.flv
+-----------------+-----------+
| FLV File Header | |
+-----------------+-----------+
| Signature (3B) | 46 4c 56 |
| Version (1B) | 1 |
| Flags (1B) | 0000 0101 |
| DataOffset (4B) | 9 |
+-----------------+-----------+
+------------------+-------------------+------------------+------------------+
| Total tag number | Script tag number | Video tag number | Audio tag number |
+------------------+-------------------+------------------+------------------+
| 13041 | 1 | 4668 | 8372 |
+------------------+-------------------+------------------+------------------+
cd cmd
cargo run -- --input ../assets/test.flv -p
+-----------------+-----------+
| FLV File Header | |
+-----------------+-----------+
| Signature (3B) | 46 4c 56 |
| Version (1B) | 1 |
| Flags (1B) | 0000 0101 |
| DataOffset (4B) | 9 |
+-----------------+-----------+
+---------------+--------------+---------------+----------------+---------------+
| FLV File Body | | | | |
+---------------+--------------+---------------+----------------+---------------+
| Index | TagType (1B) | DataSize (3B) | Timestamp (4B) | StreamID (3B) |
| 1 | Script | 1030 | 0 | 0 |
| 2 | Video | 48 | 0 | 0 |
| 3 | Audio | 7 | 0 | 0 |
| 4 | Video | 2831 | 0 | 0 |
| ... |
| 13039 | Audio | 15 | 194494 | 0 |
| 13040 | Audio | 15 | 194517 | 0 |
| 13041 | Video | 5 | 194375 | 0 |
+---------------+--------------+---------------+----------------+---------------+
+------------------+-------------------+------------------+------------------+
| Total tag number | Script tag number | Video tag number | Audio tag number |
+------------------+-------------------+------------------+------------------+
| 13041 | 1 | 4668 | 8372 |
+------------------+-------------------+------------------+------------------+
相关结构
FlvFile
├──FlvFileHeader
└──FlvFileBody
├──u32 -- first previous tag size
└──Vec<(FlvTag, u32)>
FlvTag
├──FlvTagHeader
└──FlvTagData
FlvTagData
└──ScriptTag/VideoTag/AudioTag
许可协议
根据您的选择,许可协议为以下之一:
随意。
贡献
除非您明确声明,否则根据 Apache-2.0 许可证定义的,您有意提交的任何贡献,都应按照上述方式双重许可,不附加任何额外条款或条件。
依赖关系
~1.5MB
~25K SLoC