3 个版本 (破坏性更新)
| 0.3.0 | 2019年7月2日 |
|---|---|
| 0.2.0 | 2019年6月1日 |
| 0.1.0 | 2017年10月13日 |
#841 in 音频
每月88次下载
33KB
628 行
adts-reader
用于承载编码的 AAC 音频数据的 Audio Data Transport Stream 封装格式的 Rust 解析器。
👉 注意 这不是一个 AAC 解码器,也不能解析 ADTS 有效负载内 AAC 位流的语法。
调用代码应,
- 提供
AdtsConsumer的实现,该实现将在找到 ADTS 帧有效负载时接收回调 - 将包含 ADTS 数据的缓冲区传递到
AdtsParser::push()方法
增量解析
传递给 push() 的字节切片不必正好结束在 ADTS 帧的边界处。在给定切片末尾剩余的 ADTS 数据将被解析器内部缓冲,并且必须在后续调用 push() 时提供 ADTS 数据的续集。这种结构旨在方便传递常见的包含 ADTS 数据的各个 MPEG 传输流 包的有效负载,而无需付出重新组装整个 PES 包 的代价。
编码器配置
ADTS 帧包含指示 AAC 编码器配置的头数据,该配置将通过提供的 AdtsConsumer::new_config() 实现提供给调用代码。
配置数据在流开始时提供,为了简化调用代码,解析器只有在发现音频配置已更改时才会再次调用 AdtsConsumer::new_config()。
支持的 ADTS 语法
- 固定头字段
-
mpeg_version -
protection -
audio_object_type -
sampling_frequency -
private_bit -
channel_configuration -
originality -
home
-
- 可变头字段数据
-
copyright_identifier/copyright_number- 由于我没有看到任何使用它们的示例位流,因此不支持推导这些值 -
buffer_fullness -
块数量 -
crc- 目前不可用(此外,CRC不适用于所有有效载荷字节;循环冗余校验需要解析AAC比特流)
-
- AAC有效载荷数据
- 一个包含完整ADTS帧有效载荷的
&[u8]字节切片(根据块数量,可能由一个或多个AAC块组成)
- 一个包含完整ADTS帧有效载荷的