MP3文件分析工具:IDv2、IDv1和帧数据解析

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:MP3格式广泛用于音频压缩,通过有损压缩技术减少文件大小。它包含帧和元数据标签,如IDv2和IDv1,分别用于存储歌曲信息。IDv2标签较现代,支持更多元数据和错误检测,而IDv1较为简单但易引起播放问题。此分析工具能够检查MP3中的标签和帧信息,提供音频质量和文件结构的重要参考。 mp3 idv2,idv1,frame分析工具

1. MP3音频文件结构

MP3文件格式作为数字音频的主流标准,其文件结构设计是高效存储与传输音乐的基石。本章节我们将从基础层面探索MP3文件的组成,为深入理解后续章节中的IDv1和IDv2标签做好铺垫。

1.1 MP3文件的基础结构

MP3文件主要由三部分组成:文件头、帧信息和IDv1/IDv2标签。文件头包含音频数据的格式信息,帧信息负责音频数据的实际压缩存储,而IDv1和IDv2标签则用来存储歌曲的元数据信息,如歌曲名、艺术家名、专辑名等。

1.2 从波形到MP3编码

MP3编码技术通过利用人类听觉系统的特点,丢弃一些听觉上不易察觉的声音信息来压缩原始音频波形。在编码过程中,音频数据被分割成一系列帧,每一帧包含约1152个音频样本。这种分帧方式不仅有助于数据压缩,还让文件的随机访问成为可能。

1.3 IDv1与IDv2标签的作用

IDv1和IDv2标签提供了一种标准方式来存储MP3文件的元数据。它们让音乐播放器能够展示关于歌曲的额外信息,例如标题、艺术家、作曲者等。IDv2标签比IDv1更为先进,支持更多字段和更大的信息量,极大扩展了MP3文件的信息存储能力。

通过理解MP3文件的基础结构,我们为深入分析IDv1和IDv2标签,以及它们对音频文件信息管理的重要性做好了准备。下一章节,我们将具体探讨IDv1和IDv2标签的结构和特点,揭示它们如何影响音频文件的处理和管理。

2. IDv1和IDv2标签概述

2.1 IDv1标签的结构与特点

2.1.1 IDv1标签的基本布局

IDv1标签是MP3文件中用于存储音频元数据的一种早期格式,它位于MP3文件的末尾,共占128字节。IDv1标签的结构相对简单,由以下几个部分组成:

  • 同步字节(Sync bytes):2字节,用于标识标签的开始,固定值为 0xFF 0xFF
  • 标签标识(ID3 Identifier):3字节,固定值为 TAG
  • 标签版本(ID3 version):1字节,标识ID3的版本,对于IDv1标签来说,通常是 0x01
  • 版本信息(ID3 revision):1字节,表示ID3修订版本号,IDv1标签中此值为 0x03
  • 保留字节(ID3 flags):1字节,用于标识标签是否包含附加帧等信息,IDv1标签中此值通常为 0x00
  • 标题(Title):30字节,表示歌曲标题。
  • 艺术家(Artist):30字节,表示艺术家或演唱者。
  • 专辑(Album):30字节,表示专辑名称。
  • 年份(Year):4字节,表示发行年份。
  • 评论(Comment):30字节,注释或额外信息。
  • 音轨号(Track number):1字节,表示音轨在专辑中的序号。
  • 基因信息(Genre):1字节,表示音乐流派。

2.1.2 IDv1标签的应用场景和局限性

IDv1标签由于其简单性,在一些早期的MP3播放器和软件中广泛支持,例如Winamp、Foobar2000等。然而,由于其信息存储空间有限,IDv1标签对于现代音乐管理需求来说显得过于简陋,存在以下局限性:

  • 字符编码限制:IDv1标签仅支持ASCII编码,无法记录非英文字符的歌曲标题或艺术家名称。
  • 字段大小固定:每个字段的大小固定,不能记录较长的文本信息。
  • 数据同步问题:在某些播放器上,IDv1标签可能会与音频数据同步出现问题。
  • 缺少扩展性:IDv1标签不支持自定义字段,因此无法记录如封面图片、歌词等多媒体信息。

尽管IDv1标签在当代应用中存在诸多限制,但在处理老旧的MP3文件时,了解其结构仍然具有一定的参考价值。

2.2 IDv2标签的结构与特点

2.2.1 IDv2标签的不同版本差异

IDv2标签是对IDv1标签的改进,提供了更大的灵活性和更多的信息存储空间。IDv2标签有多个版本,各个版本之间的差异主要体现在标签的大小、支持的编码格式和额外功能上。目前常见的IDv2标签版本有:

  • IDv2.2:是IDv2系列的早期版本,已经较少使用。
  • IDv2.3:相比IDv2.2增加了可变长度字段,支持更多的编码格式,是目前较为广泛使用的版本。
  • IDv2.4:进一步扩展了字段长度和自定义字段的支持,为现代音频管理提供了便利。

2.2.2 IDv2标签的存储方式和优势

IDv2标签的存储方式相比IDv1标签有了显著改进,提供了多种优势:

  • 字符编码支持:IDv2标签支持多种编码格式,包括UTF-8和UTF-16,这样就可以记录非ASCII字符。
  • 字段大小可变:字段大小不再固定,可以存储任意长度的文本信息。
  • 自定义字段:IDv2标签允许用户自定义字段,可以用来存储如歌词、封面图片等非标准信息。
  • 强健的错误检测:IDv2标签包含了校验和信息,有助于减少文件损坏导致的数据错误。

由于IDv2标签的这些优势,它们在现代的音频文件中得到了广泛的应用。接下来,我们将详细探讨IDv2标签的功能优势。

3. IDv2标签的功能优势

3.1 IDv2标签的扩展字段

3.1.1 文本信息字段的扩展

IDv2标签的核心优势之一就是对文本信息字段的显著扩展。与IDv1标签相比,IDv2标签提供更多的空间来存储如艺术家姓名、专辑标题、曲目编号、作曲家、流派等多种文本信息。这一功能的提升不仅使得音乐文件的元数据更加丰富,也为用户提供了更为详细的音乐作品信息。

此外,IDv2标签的文本字段支持多种字符集,包括但不限于UTF-8,这为国际化内容的存储提供了便利。例如,IDv2.3版本还引入了对Unicode字符集的支持,允许使用非拉丁字母表,如中文、阿拉伯文和希伯来文等,极大地增强了音乐文件的适用范围和国际化水平。

3.1.2 图像数据和链接的存储

IDv2标签不仅局限于文本信息,它还可以存储图像数据,如专辑封面、歌词等。这些视觉元素可以增强用户体验,特别是在数字音乐播放器中,可以提供更加直观的视觉反馈。IDv2.3版本专门增加了对PNG和JPEG格式图像的支持,这为艺术家和设计师提供了展示创意的平台。

同时,IDv2标签支持链接类型的字段,这意味着可以嵌入指向其他资源的URL,例如相关音乐视频或在线购买链接。这样的设计让IDv2标签不只是音频文件的描述工具,同时也成为一个可以提供附加服务的平台。

3.2 IDv2标签的元数据管理

3.2.1 标签编辑与管理工具概述

随着IDv2标签功能的增强,相关的编辑和管理工具也不断涌现,这些工具为音乐爱好者和专业人士提供了方便的操作界面。工具类型从简单的桌面应用到复杂的命令行工具不等,能够满足不同层次用户的需求。许多流行音乐播放器和库管理器内置了对IDv2标签的编辑功能,用户可以轻松地通过这些界面查看和修改元数据。

此外,开源社区也提供了丰富的命令行工具如 MP3 Diags Kid3 ,这些工具的功能强大且灵活,支持批量编辑IDv2标签,大大提升了处理大量音乐文件时的效率。这些工具通常具备与不同音乐平台交互的能力,为用户提供了将音乐库与各种服务进行同步的可能性。

3.2.2 元数据的一致性和同步问题

在进行元数据管理时,一个重要的考虑因素是数据的一致性和同步问题。由于音乐文件可能被复制、移动或在不同设备间同步,保持元数据的一致性就显得尤为重要。为此,一些管理工具提供了元数据同步功能,它们可以在不同设备或存储位置之间同步更改。

一些先进的工具还支持对音乐文件进行备份和恢复操作,这在处理大量文件时尤为重要。同步过程中,工具会检测到不同文件版本的元数据差异,并提供合并选项,以便用户决定保留哪些更改。通过这种机制,用户可以确保元数据的一致性,并有效地管理个人音乐库的元数据状态。

4. 帧信息与音频质量关系

4.1 MP3帧的结构分析

4.1.1 帧头与帧同步

MP3格式作为一种压缩音频文件格式,其信息是按帧(Frame)组织的,每一帧包含了音频数据的一定部分。帧头是MP3帧结构中的第一个组成部分,它包含了帧同步信息和帧的其它基本属性,如比特率、采样率、版本信息、填充值以及保护位等。帧同步信息对于MP3解码器来说至关重要,因为它允许解码器正确识别并解析后续的帧数据。

帧同步的实现通常是通过特定的位模式来完成的,这样的模式在MP3数据流中不会随机出现,从而避免了解码器在非帧边界进行错误的同步。帧头的这些信息是解码MP3文件的基础,缺少帧头信息或者帧头错误都会导致解码过程出现问题。

flowchart LR
    A[开始解析MP3文件]
    A --> B[识别帧头]
    B --> C[提取同步信息]
    C --> D[解析帧属性]
    D --> E[定位下一帧]

4.1.2 辅助信息与音频数据部分

MP3帧除了帧头之外,还包含辅助信息和音频数据部分。辅助信息用于存储一些额外的数据,如动态范围控制、私有位信息等,这些信息可以用于特定的应用场景,比如在一些设备上提供更灵活的音频处理选项。音频数据部分则是压缩后的音频数据本身。

音频数据部分是MP3文件中最核心的部分,它根据MP3的编码规则将原始音频信号转换为一系列的位流数据。这些数据在解码后,需要通过逆向处理过程来还原为接近原始的音频信号。MP3的编码是一个复杂的过程,涉及到心理声学模型和比特分配策略等,这里不做详细展开。

4.2 帧信息对音质的影响

4.2.1 比特率与采样率对音质的影响

在MP3文件中,比特率和采样率是决定音频质量的两个重要参数。比特率指的是每秒音频数据所占用的比特数,它直接影响音频文件的大小和音质。较高的比特率通常意味着较好的音质,但同时也意味着更大的文件体积。常见的MP3比特率有320kbps(高)、192kbps(中)、128kbps(低)等。

采样率则表示每秒钟采集声音样本的次数,它决定了音频信号的频率范围。采样率越高,能记录的最高频率就越大。一般来说,人耳可闻的最高频率大约为20kHz,因此44.1kHz或者48kHz的采样率就能够满足人耳的需求。

graph TD
    A[选择比特率和采样率] --> B[比特率影响文件大小和音质]
    A --> C[采样率影响频率范围]
    B --> D[高比特率=高音质、大文件]
    B --> E[低比特率=低音质、小文件]
    C --> F[高采样率=宽频率范围]
    C --> G[低采样率=窄频率范围]

4.2.2 帧信息错误与音频修复策略

尽管MP3文件格式广泛使用,但帧信息错误的问题依旧存在。错误可能发生在传输过程中,如下载、移动存储设备损坏或读取设备故障等情况。帧信息的损坏会直接影响到音频数据的解码,造成播放过程中的卡顿、杂音甚至是无法播放。

解决帧信息错误的方法通常涉及音频修复工具,这些工具能够检测并尝试恢复受损的MP3文件。例如,使用一些专业软件可以进行错误检测,对错误的帧信息进行修正或者用冗余数据进行替换。在一些情况下,如果无法完全修复音频文件,则可以尝试提取未损坏的帧,重新编码以减少损失。

代码示例(伪代码):
  1. 使用音频修复工具加载损坏的MP3文件。
  2. 检测文件的帧头信息,识别出损坏的帧。
  3. 尝试从文件的其他部分提取未损坏的帧。
  4. 将提取的未损坏帧重新编码为MP3文件。

修复过程可能需要一定的时间,并且并非所有损坏的文件都能完全恢复。用户在音频文件损坏的情况下,尽量使用专业的工具来进行修复,以避免进一步损坏文件。

# 5. MP3文件分析工具的功能介绍

## 5.1 文件分析工具的选择标准

### 5.1.1 功能完整性与易用性分析

选择MP3文件分析工具时,功能的完整性是首要考虑因素。用户需要评估工具是否能够覆盖到所有需要的分析功能,比如是否支持IDv1和IDv2标签检测,是否能够提供音频质量的详细报告,以及是否有其他附加功能,例如批量处理、文件修复和格式转换等。

同时,易用性也是选择工具时不容忽视的方面。易用性表现在用户界面的直观性、操作流程的简便性以及帮助文档的详尽程度等方面。理想的工具应该让用户即使是第一次使用也能快速上手,并且在后续使用中能够高效地完成任务。

### 5.1.2 支持的IDv1和IDv2标签检测

IDv1和IDv2标签是MP3文件中用于存储音频元数据的关键部分。一个优秀的MP3文件分析工具必须能够准确检测这两种标签,并提供标签内容的详细视图。这包括但不限于歌曲名、艺术家、专辑名、曲目编号、版权信息、封面图片等。同时,工具应能允许用户编辑这些标签,并同步修改文件本身,以及在不同格式的标签之间进行转换。

除了基本的读取和编辑功能,高级的工具还应具备验证标签数据完整性的功能,以确保音频文件元数据的准确性和一致性。

## 5.2 分析工具的高级功能

### 5.2.1 音频质量评估工具介绍

MP3文件分析工具的核心功能之一是对音频质量进行评估。这一功能主要通过分析帧信息来实现,包括比特率、采样率以及音频数据的编码质量。通过这些参数的综合分析,工具可以给出文件的整体音质评估报告。

评估报告通常会包含音频文件的比特率分布图、采样频率图表以及可能存在的压缩失真度量等。高级工具还会支持用户自定义评估参数,比如可接受的最大失真度,以及提供音频修复建议,帮助用户改进音质。

### 5.2.2 文件批量处理与自动化脚本应用

对于拥有大量MP3文件的用户而言,手动分析每一个文件显然是不现实的。因此,MP3文件分析工具还应该提供批量处理的能力。批量处理可以包括同时读取多个文件的标签信息,统一修改标签,批量转换文件格式,以及批量执行音频质量评估等。

除了内置的批量处理功能,许多工具还支持自动化脚本的编写和应用。用户可以利用这些脚本完成更加复杂的任务,例如自动化地从互联网下载元数据并同步到本地音频文件,或者根据特定条件筛选文件。这为高级用户提供了一种高效、定制化的解决方案。

```mermaid
graph LR
    A[开始] --> B[选择文件]
    B --> C[应用标签模板]
    C --> D[设置批量转换参数]
    D --> E[执行批量处理]
    E --> F[生成报告]
    F --> G[结束]

以上流程图展示了使用MP3文件分析工具进行批量处理的一般步骤。这不仅提高了工作效率,也使得处理大量音频文件成为可能。

为了进一步说明,以下是一个简单的bash脚本示例,演示如何批量检查MP3文件的ID3标签信息:

#!/bin/bash

# 定义一个数组,包含所有需要分析的MP3文件
mp3_files=("song1.mp3" "song2.mp3" "song3.mp3")

# 遍历文件数组中的每一个文件
for file in "${mp3_files[@]}"
do
    # 使用id3v2命令查看ID3标签信息
    id3v2 -l "$file"
done

通过执行上述脚本,用户可以快速地获取到指定目录下所有MP3文件的ID3标签信息。这种方法在处理成百上千的音频文件时尤其高效。

6. 实践案例:使用MP3分析工具优化音频库

在数字音频领域,保持音频文件质量的同时有效管理音频库是一项挑战。良好的管理能够确保音频文件的可访问性和可用性,而优化音频库则可以提高工作效率和音频质量。在这一章节中,我们将探讨如何使用MP3分析工具来管理和优化音频库,并提供实践中的技巧和注意事项。

6.1 音频库管理的挑战与解决方案

音频文件的管理不仅涉及文件的组织,还包括音频质量的保持和元数据的更新。以下是我们在管理音频库时可能会遇到的挑战以及如何应对这些挑战。

6.1.1 音频文件的分类与归档

对于大型音频库来说,文件的分类和归档至关重要。一个合理的分类系统可以帮助快速定位音频资源,提高工作效率。音频文件可以根据不同的属性进行分类,例如艺术家、专辑、流派、发行年份等。我们可以使用文件命名规则来体现这些属性,并使用目录结构来组织文件。

flowchart LR
    A[音频库根目录] --> B[艺术家目录]
    B --> C[专辑目录]
    C --> D[具体MP3文件]
    style A fill:#f9f,stroke:#333,stroke-width:2px

6.1.2 音频信息的更新与维护

音频信息,特别是IDv2标签,经常需要更新和维护,以确保信息的准确性和最新性。我们可以使用支持IDv2标签的工具来批量修改和同步信息。例如,如果有一个新专辑发布,就需要将这个信息添加到所有相关MP3文件中。

6.2 实践中的技巧与注意事项

在音频文件的实际操作过程中,我们需要注意一些技巧和避免一些常见错误,以确保音频文件的完整性和高质量。

6.2.1 避免常见的文件损坏问题

音频文件,尤其是经过多次编辑和转换的MP3文件,可能会损坏。因此,定期检查文件的完整性是必要的。我们可以使用MP3分析工具来检测文件的帧信息错误,并进行修复。以下是一个使用 mp3splt 命令检查并修复MP3文件的示例:

mp3splt -d -b 100 -n --split-when silence -l -t 1:00:00 "audiofile.mp3"

这个命令将会在100毫秒的静默处分割音频文件,并列出所有分割点。如果发现文件损坏,我们可以根据输出的信息来决定如何处理。

6.2.2 提高音频处理效率的方法

为了提高音频处理效率,我们可以采取以下措施:

  • 使用脚本自动化任务 :通过编写脚本来自动化重复性的任务,例如批量重命名、格式转换、元数据更新等。
  • 利用高级分析工具 :使用支持IDv1和IDv2标签检测的工具来快速识别和修复标签问题。
  • 音频质量评估 :定期使用音频质量评估工具检查音频文件的比特率、采样率和其他参数,确保音质符合标准。
  • 备份机制 :在进行任何可能影响原始文件的操作之前,确保有完整的备份。

通过这些方法,我们能够确保音频库的质量和效率。在下一节中,我们将总结如何将这些知识应用到实践中,以实现音频库的优化。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:MP3格式广泛用于音频压缩,通过有损压缩技术减少文件大小。它包含帧和元数据标签,如IDv2和IDv1,分别用于存储歌曲信息。IDv2标签较现代,支持更多元数据和错误检测,而IDv1较为简单但易引起播放问题。此分析工具能够检查MP3中的标签和帧信息,提供音频质量和文件结构的重要参考。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

解析MP3音频格式 一、概述 MP3 文件是由(frame)构成的,MP3 文件最小的组成单位。MP3 的全称应为MPEG1 Layer-3 音频文件,MPEG(Moving Picture Experts Group)在汉语中译为活动图像专家组,特指活动影音压缩标准,MPEG 音频文件是MPEG1 标准中的声音部分,也叫MPEG 音频层,它根据压缩质量编码复杂程度划分为三层,即 Layer-1、Layer2、Layer3,且分别对应MP1、MP2MP3 这三种声音文件,并根据不同的用途,使用不同层 次的编码。MPEG音频编码的层次越高,编码器越复杂,压缩率也越高,MP1 MP2 的压缩率分别为4:1 6:1-8:1,而MP3 的压缩率则高达10:1-121,也就是说,一分钟CD 音质的音乐,未经压缩需要10MB的存储空间,而经过MP3 压缩编码后只有1MB 左右。不过MP3 对音频信号采用的是有损压缩方式,为了降低声音失真度,MP3 采取了“感官编码技术”,即编码时先对音频文件进行频谱分析,然后用过滤器滤掉噪音电平,接着通过量化的方式将剩下的每一位打散排列,最后形成具有较高压缩比的MP3 文件,并使压缩后的文件在回放时能够达到比较接近原音源的声音效果。 名词解释: 比特率是指每秒传送的比特(bit)数。单位为 bps(Bit Per Second),比特率越高,传送的数据越大。 比特率比特率表示经过编码(压缩)后的音、视频数据每秒钟需要用多少个比特来表示,而比特就是二进制里面最小的单位,要么是0,要么是1。比特率与音、视频压缩的关系,简单的说就是比特率越高,音、视频的质量就越好,但编码后的文件就越大;如果比特率越少则情况刚好相反。 采样率(也称为采样速度或者采样频率)定义了每秒从连续信号中提取并组成离散信号的采样个数,单位用赫兹(Hz)来表示。采样频率的倒数是采样周期(也称为采样时间),它表示采样之间的时间间隔。这里要注意不要将采样率与位速相混淆。 二、MP3文件整体结构 MP3文件大体分为三部分:TAG_V2(ID3V2),Frame, TAG_V1(ID3V1) ID3V2标签 ID3v2文件头,以字符串“ID3”为标志,包含了演唱者,作曲,专辑等信息,长度不固定,扩展了ID3V1的信息量。 音频数据 一系列的,个数由文件大小长决定,每个FRAME的长度可能不固定,也可能固定,由位率bitrate决定,每个FRAME又分为数据实体两部分,头记录了mp3的位率,采样率,版本等信息,每个之间相互独立 ID3V1标签 ID3v1文件结尾,以字符串“TAG”为标记,其长度是固定的128个字节,包含了演唱者、歌名、专辑、年份等信息。 三、MP3结构具体分析 1.ID3V2标签 每个ID3V2.3 的标签都一个标签头若干个标签或一个扩展标签头组成。关于曲目的信息如标题、作者等都存放在不同的标签中,扩展标签头标签并不是必要的,但每个标签至少要有一个标签。标签头标签一起顺序存放在MP3 文件的首部。 标签头 在文件的首部顺序记录10 个字节的ID3V2.3 的头部。数据结构如下: char Header[3]; /*必须为"ID3"否则认为标签不存在*/ char Ver; /*版本号ID3V2.3 就记录3*/ char Revision; /*副版本号此版本记录为0*/ char Flag; /*存放标志的字节,这个版本只定义了三位,稍后详细解说*/ char Size[4]; /*标签大小,包括标签头的10 个字节所有的标签的大小*/ 注:最后4个字节表示ID3V2标签的大小,在实际寻找首的过程中,我发现大部分的mp3文件的标签大小是包含标签头的,但有的又是不包含的,可能是某些mp3编码器写标签的BUG,所以为了兼容只好认为其是包含的,如果按大小找不到,再向后搜索,直到找到首为止。 计算ID3V2标签的大小: 最后四个字节表示,但每个字节只用7 位,最高位不使用恒为0。所以格式如下: 0xxxxxxx 0xxxxxxx 0xxxxxxx 0xxxxxxx 计算大小时要将0 去掉,得到一个28 位的二进制数,就是标签大小(不懂为什么要这样做),计算公式如 下: int ID3V2_Size; ID3V2_Size = (Size[0]&0x7F;)*0x200000 +(Size[1]&0x7F;)*0x4000 +(Size[2]&0x7F;)*0x80 +(Size[3]&0x7F;) (2) 标签 每个标签都有一个10 个字节的至少一个字节的不固定长度的内容组成。它们也是顺序存放在文件中,标签头其他的标签也没有特殊的字符分隔。得到一个完整的的内容只有从头中的到内容大小后才能读出,读取时要注意大小,不要将其他的内容或头读入。 一般我们从标签头中获取信息计算出整个ID3V2标签的大小即可,对于ID3V2的标签就不再仔细分析2.音频数据 数据往往有多个,至于有多少,由文件大小大小来决定。每个都有一个四字节长的头,接下来可能有两个字节的CRC校验,其存在由头中的具体信息决定。接着就是的实体数据,也就是MAIN_DATA了。 (1)音频数据头 格式如下: AAAAAAAA AAABBCCD EEEEFFGH IIJJKLMM 符号 长度(bit) 位置(bit) 描述 A 11 (3121同步(所有位置1) B 220~19) MPEG 音频版本ID 00 – MPEG 2.5 01 – 保留 10 – MPEG 2 (ISO/IEC 13818-3) 11 – MPEG 1 (ISO/IEC 11172-3) C 218~17) Layer描述 00 - 保留 01 - Layer III 10 - Layer II 11 - Layer I D 116) 校验位(0 - 紧跟头后有16位即2个字节用作CRC校验1 - 没有校验) E 4 (15~12) 比特率(位率)(见比特率索引表) F 21110) 采样率(见采样率索引表) G 1 (9) 填充位(填充用来达到正确的比特率。) 0 – 没有填充 1 – 填充了一个额外的空位 H 1 (8) 私有bit,可以用来做特殊应用。例如可以用来触发应用程序的特殊事件。 I 2 (7~6) 声道 00 立体声 01 联合立体声(立体声) 10 双声道(立体声) 11 单声道(单声) J 2 (5~4) 扩展模式(仅在联合立体声时有效) 扩展模式用来连接对立体声效果无用的信息,来减少所需的资源。这两个位在联合立体声模式下有编码器动态指定。 K 1 (3) 版权 0无版权 1有版权 L 12) 原创 0 原创拷贝 1 原创 M 21) 强调 00 - 无 01 - 50/15 ms 10 - 保留 11 - CCIT J.17 【头信息表】 索引值 MPEG1 MPEG2&MPEG2;.5 Layer1 Layer2 Layer3 Layer1 Layer2&3 0000 Free 0001 32 32 32 32 8 0010 64 48 40 48 16 0011 96 56 48 56 24 0100 128 64 56 64 32 0101 160 80 64 80 40 0110 192 96 80 96 48 0111 224 112 96 112 56 1000 256 128 112 128 64 1001 288 160 128 144 80 1010 320 192 160 160 96 1011 352 224 192 176 112 1100 384 256 224 192 128 1101 416 320 256 224 144 1110 448 384 320 256 160 1111 Bad 【比特率索引表】 Bits MPEG1 MPEG2 MPEG3 00 44100 22050 11025 01 48000 24000 12000 10 32000 16000 8000 11 保留 【采样率索引表】 (2)如何计算音频数据长度 我们首先区分两个术语:大小长度。大小即每采样数表示一中采样的个数,这是恒定值。其值入下表所示 MPEG1 MPEG2 MPEG2.5 Layer1 384 384 384 Layer2 1152 1152 1152 Layer3 1152 576 576 【每采【每采样数表】 长度是压缩时每一的长度,包括头。它将填充的空位也计算在内。LayerI的一个空位长4字节,LayerIILayerIII的空位是1字节。当读取MPEG文件时必须计算该值以便找到相邻的。 注意:因为有填充比特率变换,长度可能变化。 从头中读取比特率,采样频率填充, LyaerI使用公式: 长度(字节) = 每采样数 / 采样频率(HZ) * 比特率(bps)/ 8 +填充 * 4 LyerIILyaerIII使用公式: 长度(字节)= 每采样数 / 采样频率(HZ) * 比特率(bps)/ 8 + 填充 例: LayerIII 比特率 128000,采样频率 44100,填充0 =〉大小 417字节 (3)计算每的持续时间 之前看了一些文章都说mp3的一的持续时间是26ms,结果在实际程序的编写中发现无法正确按时间定位到,然后又查了一些文章才知道,所谓26ms一只是针对MPEG1 Layer III而且采样率为44.1KHz来说是对的,但mp3文件并不都是如此,其实这个时间也是可以通过计算来获得,下面给出计算公式 每持续时间(秒) = 每采样数 / 采样频率(HZ) 可以这么理解:每采用数就是要采取的总数,采样率就是采取的速度,相除 就得到时间。 这样通过计算可知 MPEG1 Layer III 采样率为44.1KHz的一持续时间为26.12...不是整数,不过我们权且认为它就是26毫秒吧。 如果是MPEG2 Layer III 采样率为16KHz的话那一要持续36毫秒,这个相差还是蛮大的,所以还是应该通过计算来获的,当然可以按MPEG版本,层数采样率来建一个表,这样直接查表就可以知道时间了。 3.ID3V1标签 ID3v1标签用来描述MPEG音频文件。包含艺术家,标题,唱片集,发布年代流派。另外还有额外的注释空间。位于音频文件的最后固定为128字节。可以读取该文件的最后这128字节获得标签。以最后128个字节的头三个字节为“TAG”作为有ID3V1的判断依据。 结构如下: AAABBBBB BBBBBBBB BBBBBBBB BBBBBBBB BCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCD DDDDDDDD DDDDDDDD DDDDDDDD DDDDDEEE EFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFG 符号 长度(byte) 位置 描述 A 3 (0~2) 标签标志。如果存在标签并且正确的话,必须包含'TAG'。 B 30 (3~32) 标题 C 30 (33~62) 艺术家 D 30 (63~92) 唱片集 E 4 (93~96) 年代 F 30 (97~126) 注释 G 1 (127) 流派 有了上述的这些信息,我们就可以自己写代码,从MP3文件中抓取信息以及修改文件名了。但是,如果真的想写一个播放软件,还是需要读它的数据,并进行解码。 四、解析方法 当你想读取MPEG文件的信息时,解析前三个字节,判断是否有ID3V2标签,有则根据上面的方法算出ID3V2标签的总大小,这样就找到了音频数据的第一,读取它的头信息,获取比特率、采样率、MPEG版本号、Layer描述号等信息,根据上面提供的方法算出每的长度持续时间,对于定比特率的其它是相同的,也就是说解析第一就达到了目的。但这也不是所有情况。变比特率的MPEG文件使用使用所谓比特变换,也就是说每一的比特率依照具体内容变化。这时就需要你每一解析
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值