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帧有效载荷的