#audio-metadata #mpeg #metadata #mp3 #audio-stream #sample-rate

mpeg-audio-header

适用于MPEG音频元数据的全解析器

5个版本

0.0.6 2023年1月30日
0.0.5 2022年10月13日
0.0.4 2022年7月12日
0.0.2 2022年2月23日

#1028音频

MPL-2.0 许可证

53KB
945

mpeg-audio-header

Crates.io Docs.rs Deps.rs Security audit Continuous integration License: MPL 2.0

解析来自VBR(XING/VBRI)和MPEG帧头的MPEG音频流的元数据。

免责声明

这个crate不再维护。我建议查看 lofty-rs 作为更通用的替代品。

如果您在lofty-rs中遇到问题或缺少功能,请报告它们,它们可能会很快得到修复。

动机

MPEG音频格式的规范非常薄弱。没有专门的头部包含编码音频流的持续元数据,如通道数、采样率(Hz)或平均比特率(每秒比特数),以估计压缩比和音频质量。

这个库旨在通过应用最佳努力启发式方法来确定音频元数据。元数据可能包含在先于音频帧的VBR头部(XING/VBRI)中,或者可以收集和汇总所有MPEG帧头部以获得更精确和可靠的信息。

限制

元数据解析器被故意设计为容错,即使对于损坏或无效的文件也可能提供结果。这种结果的确切精度是未定义的。未来可能会添加更严格的解析策略和相应的错误报告。目前只有I/O错误可以阻止解析器继续。

这个crate不旨在解析ID3或APE元数据,永远不会。请使用专门的crate如 id3ape 用于此目的。

测试

预期测试文件将在 test-data/ 目录中可用。它们不是作为此存储库的一部分提供的,并且目前需要手动下载。请参阅每个目录中的相应的 .keep 文件,其中包含相应的下载URL。按需自动下载测试文件将很棒。

测试文件通过其路径引用。如果没有为结果头内容提供专门的检查,则只需确保读取这些文件的头部成功。也可以验证损坏文件的预期失败。

使用-- --nocapture运行测试,以在stdout/stderr上输出诊断信息。

致谢

这个crate最初是mp3-duration的一个分支。很快,很明显需要大量重写以应对新要求并正确处理所有格式变体。然而,一些代码片段可能仍然反映了这种遗产。

一些想法也借鉴自symphonialofty-rs

许可证

在Mozilla公共许可证2.0(MPL-2.0)下授权(见MPL-2.0.txthttps://www.mozilla.org/MPL/2.0/)。

本版权许可证的权限取决于提供受许可文件的源代码及其修改的副本,这些修改的副本在相同的许可证下(或在某些情况下,GNU许可证之一)下。必须保留版权和许可证通知。贡献者提供专利权利的明确授予。然而,使用受许可工作的更大作品可以在不同条款下分发,并且不需要包含在更大作品中的文件的源代码。

贡献

您有意提交以包含在作品中的任何贡献都应按照Mozilla公共许可证2.0(MPL-2.0)授权。

需要在每个文件的顶部添加以下标题,并带有相应的SPDX简短标识符

// SPDX-License-Identifier: MPL-2.0

依赖项

~280–740KB
~17K SLoC