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

 音频封装格式一般由:多媒体信息+音频流+封面流+歌词流组成。有些音乐会包含封面和歌词,则对应有封面流、歌词流。多媒体信息包括:标题、艺术家、专辑、作曲、音乐风格、日期、码率、时长、声道布局、采样率、音频编码器等。而音频封装包括: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滤镜,歌词解析,音视频学习路线,音视频知识总结、流媒体协议

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐福记456

您的鼓励和肯定是我创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值