关于音频文件的元信息

Table of Contents

在最近一次录入音频文件到数据库的时候突然想到一个问题: 该如何选择音频文件的专辑封面呢,该如何知道这首曲的艺术家是谁呢?

突然想到以前用 Windows MediaPlayer 打开一些本地音频的时候有专辑封面并且没找到这些封面放在哪里,然后就不知道为啥很自然的想到元信息(metadata).

这次就是来了解一下音频文件的元信息.

什么是文件的元信息(Metadata)

所谓元信息其实就是关于文件本身的一些信息,比如这个文件的作者是谁,文件名又是什么,大小多大,什么类型等等.

元信息就像是一本书的目录一样,而文件的数据本题就是正文内容.我们可以通过元信息在不访问文件本身的数据的情况下了解文件.

元信息是有标准的,每种文件类型都有自己的标准,比如图片会有描述色深的信息,而音频文件就没有,但是音频文件有图片集(正面封面和背面封面)的元信息,而图片则没有.

音频的元信息

音频文件的开始或者结尾的区域就用于保留元信息的,之后可以根据这些元信息来选择解码音频文件的方式.

这些元信息可能包含以下信息,比如:

  • 歌曲名字
  • 艺术家名字
  • 专辑名字
  • 专辑号
  • 歌曲的发布日期
  • 时间长度
  • 专辑封面

即便只是指音频文件,不同格式的音频文件所采用的元信息系统也是不一样的,比如 MP3 文件,它有两种储存元信息的方式: ID3v1ID3v2.

ID3v1 就是在音频文件结尾的 128 字节区域做为储存元信息的地方,而 ID3v2 就是以音频文件开头的字节区域作为储存元信息的地方,而 ID3v2 最大可以储存高达 256MB 的元信息.

ID3v1ID3v2 统称 ID3 tags, ID3 tags 是由 MP3 设计的,其他也有少数格式的音频使用这套 tags, 比如 AIFFWAV 就使用了 ID3v2.

Python库

之前写个人项目的时候有个想法: 直接根据音频文件的元信息建立数据库.然而就音频的封面而言就不大可能了,因为并非所有音频都有封面.

目前我个人只是稍微用过一下eyed3,文档还算凑合,关于音频封面问题,我我到了一个关于如何添加音频封面的教程: https://tuxpool.blogspot.com/2013/02/how-to-store-images-in-mp3-files-using.html.

虽然最后我放弃了这个想法,但是也有一番收获.

Author: saltb0rn (asche34@outlook.com)

Date: 2019-03-20

Emacs 28.2 (Org mode 9.5.5)

Validate