走进音视频的世界——音频封装格式

走进音视频的世界——音频封装格式

音频封装格式一般由:多媒体信息+音频流+封面流+歌词流组成。有些音乐会包含封面和歌词,则对应有封面流、歌词流。多媒体信息包括:标题、艺术家、专辑、作曲、音乐风格、日期、码率、时长、声道布局、采样率、音频编码器等。而音频封装包括:mp3、m4a、ogg、amr、wma、aac、wav、flac、ape等。前面两篇文章介绍过相关概念:走进音视频的世界——音视频基本概念​​​​​​​、走进音视频世界——视频封装格式。音频格式如下图所示:

以下面问题为出发点,揭开音频封装格式的面纱:

① 音乐封面如何获取?

② 音乐歌词如何获取与显示?

③ 有损格式与无损格式有什么区别?

④ 不同封装格式有什么联系,又有什么区别?

先从FFprobe检测到的音频metadata说起,如下图1所示:

从上图可以看出,前半部分是title标题、artist艺术家、album专辑、album_artist艺术家专辑、composer作曲者、genre音乐风格式;中间部分是lyrics歌词,每句歌词前面有对应的时间戳;后半部分是两个流,第0编号的流是音频轨,包含:音频编码器、采样率、声道布局、码率,第1编号的流是封面,其实是一帧图像,包含:图像编码器、像素格式、分辨率。接下来根据上面提出的问题进行展开分析。

1、获取音乐的封面

音乐封面保存在视频图像流中,先解析出图像编码器、像素格式、分辨率等参数,然后根据编码器去寻找对应的解码器,并打开解码器,对图像编码压缩数据进行解码,最终解码出来的图像就是封面了。

2、音乐歌词的获取与显示

上面有提及,每句歌词前面有显示的时间戳,以音频时钟为基准,歌词时间戳同步于音频时间戳。也就是根据音频时间戳来同步解析歌词,然后把歌词回调到应用层渲染显示。另外一个问题,当前歌词什么时候该消失呢?歌词没有具体的显示时长,等待下一个歌词的到来,把当前歌词覆盖。

3、有损格式与无损格式的区别

(1) 无损音乐格式

无损音乐格式有ape、wav、flac三种,其中ape、flac都是基于wav进行压缩。而wav是微软专门为Windows开发的一种标准数字音频文件,文件扩展名wav,是WaveForm的缩写,文件大小计算公式:size=(采样率*量化位数*声道/8)/时间(秒)。一般采样率是44100Hz,量化位数为16位,声道数为2(即立体声道),1分钟的音频占用存储空间约为10M。

在Windows环境下,大多数媒体文件都是按照资源互换文件格式(Resource Interchange File Format)来储存信息的,简称为RIFF格式。构成RIFF的基本单位成为块(Chunk),每个RIFF文件由若干块组成,wav基本结构如下表所示:

RIFF块 文件格式类型“WAVE”

fmt块fact 块(压缩编码格式要含有该块)data块

表1—wav基本结构

每个块由块标识、长度、数据组成,如下代码段:

struct chunk {

u32 id; //块标识

u32 size; //块大小

u8 data[size]; //块内容

};

其中fmt块由声道数、采样率、码率、块对齐、量化位数五个参数组成,如下表所示:

Num Channels 2 Bytes 小端存储 SampleRate 4 Bytes 小端存储 ByteRate 4 Bytes 小端存储 Block Align 2 Bytes 小端存储 BitsPerSample 2 Bytes 小端存储

表2—WaveForm的format参数

(2) 有损音乐格式

有损音乐格式包括:mp3、m4a、ogg、amr、wma、aac等。目前最为流行的是mp3(MPEG-1 audio layer3),有着mp3的下一代之称的是aac(Advance Audio Coding)。有损格式压缩率比无损的高,文件占用存储空间小,但是声音还原度不如无损格式。我们下载音乐时,碰到高品质或者无损音质的音乐,通常要VIP会员或按需收费,因为越高品质越接近原声。而无损音乐从理论上能够100%保留声音细节,100%还原原声。无损音质英文简称为SQ(Super Quality,超音质)。关于无损格式与有损格式对比如下表所示:

常见格式 是否有损 优点 缺点 mp3、m4a、ogg、amr、wma、aac 有损 音质相对差 占用空间小 wav、ape、flac 无损 音质相对好 占用空间大

表3—有损与无损格式对比

4、不同封装格式的联系与区别

封装格式共同点是基本结构是相同的,都是由多媒体信息+音频流+封面流+歌词流组成。区别是不同封装格式,采用编码方式不一样,压缩率不一样,音频流子结构不一样。下面是不同封装格式的多方位对比,如表4所示:

格式

发布者

年份

编码器

是否有损 描述

wav

微软

1991

pcm

无损 波形文件,直接存储声音波形

ape

Matthew

2000

ape

无损 压缩率约为55%,比flac高

flac

Josh Coalson

2000

flac

无损 抗损坏,快速定位,可用于流媒体

mp3

MPEG-1

1992

mp3

有损 压缩比1:10甚至1:12,占有存储空间小,有版权

aac

MPEG-2

1997

aac

有损 支持多声道,更高解析度,更高压缩率

m4a

MPEG-4

1998

aac

有损 MPEG-4的扩展名,由ipod采用m4a变得流行

ogg

Xiph.org

不详

vobis

有损 全称OGGVobis,支持多声道,支持流式播放

amr

欧盟通信

不详

amr_nb/amr_wb

有损 自适应多码率,占用存储空间特别小

wma

微软

1999

wma

有损 支持证书加密,主要应用于VOIP视频通话

表4—不同封装格式对比

音视频学习和音视频处理项目可参考:GitHub - xufuji456/FFmpegAndroid: android端基于FFmpeg音视频处理。实现音频剪切、拼接、转码、混音、均衡器音效;视频剪切、水印、截图、转码、编解码、转Gif动图;FFmpeg本地推流、H264与RTMP实时推流直播;FFmpeg滤镜,歌词解析,音视频学习路线,音视频知识总结、流媒体协议

你可能也喜欢

爯(稱、称、偁、秤)
365系统维护

爯(稱、称、偁、秤)

📅 09-21 👀 4926
“螃蟹养到太湖里,没想到代价这么大!” ——太湖围网清拆的调查与思考
关于游艇的游戏有哪些?水上驾驶游艇游戏下载-游艇游戏大全
flash结婚请柬制作
365系统维护

flash结婚请柬制作

📅 09-22 👀 2041
老式缝纫机跳线(老式缝纫机不吃厚还跳线怎么办?)
bat365官方登录中文

老式缝纫机跳线(老式缝纫机不吃厚还跳线怎么办?)

📅 07-09 👀 4974
挖掘机薪资待遇
det365娱乐官网登录

挖掘机薪资待遇

📅 07-23 👀 9282