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

走进音视频的世界——音频封装格式相关推荐

  1. 走进音视频的世界——Matroska封装格式的介绍(二)

    Matroska封装格式非常灵活.兼容性好,既适用于本地文件存储又可以进行实时流传输.本篇文章主要探讨Matroska的编解码器映射,如何封装视频流.音频流.字幕流.如果要Matroska的介绍.功能 ...

  2. 走进音视频的世界——Matroska封装格式的介绍(一)

    Matroska是一个开放标准项目,基于EBML(Extensible Binary Meta Language 可扩展的二进制元语言),旨在成为多媒体格式容器的标准.EBML与XML结构有点类似,R ...

  3. 走进音视频的世界——音视频解码

    音视频文件是经过编码.封装而成的.那么反过来,要播放音视频文件,首先得解封装.解码.上一篇博客讨论到音视频编码:走进音视频的世界--音视频编码,我们来个上下呼应,本文与大家探讨一下音视频解码.本质上, ...

  4. 走进音视频的世界——音视频的基本概念

    音视频通用的基本概念有码率.时长,而不同音视频有不同的封装格式.编码协议.其中视频关键参数有分辨率.帧率.画质.旋转角度.像素格式,而音频关键参数有采样率.声道数.声道布局.音质.采样数.采样位数.帧 ...

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

    音视频的时长怎么获取,音视频的封面怎么获取,音视频的格式怎么获取呢?这些信息都以特定格式存储在文件开头或者结尾,称为多媒体信息或者多媒体元数据.通用的封装格式由:文件标识头+多媒体信息+音视频(字幕) ...

  6. 走进音视频的世界——剖析exo播放器架构

    ExoPlayer是Google开源的一款播放器,基于Android平台的可扩展多媒体播放器,支持HLS流.Smooth Streaming流.Dash流,支持扩展FFmpeg.Vpx.Av1.Fla ...

  7. 学习笔记(2):基于NDK、C++、FFmpeg的android视频播放器开发实战-音视频基础知识Mpeg4封装格式音视频编码格式讲解...

    立即学习:https://edu.csdn.net/course/play/7417/151027?utm_source=blogtoedu 封装:将音视频从文件中读出来 解码:解压出来,转换成显卡支 ...

  8. 走进音视频的世界——音视频编码

    音视频流是通过特定编码器压缩,由一系列的压缩图像/语音帧组成.当然可能存在多种语言多音轨,每个音轨之间的音频流相互独立.还可能存在内置字幕,常见的字幕格式有sub.smi.ssa.srt等.但是,本篇 ...

  9. 走进音视频的世界——杜比视界Dolby Vision与HDR

    Dolby Vision(杜比视界)是杜比实验室推出的影像画质技术,具有更宽的色域和高动态范围HDR,亮度.色度和对比度更加逼真,从而使得整体图像更加生动.图像的明亮部分可以变得更亮,因此图像似乎具有 ...

最新文章

  1. BIEE-CSS样式大全
  2. Android log 里面快速搜索错误堆栈 ( 关键字)
  3. 600. 不含连续1的非负整数
  4. POJ 1742 Coins ( 经典多重部分和问题 DP || 多重背包 )
  5. vector的应用练习
  6. 启动、内存、卡顿三大分析,用户体验就用它?
  7. django安装_技术大牛详解:Django框架之环境安装
  8. 几行代码创建属于你自己的SQL数据库
  9. 2.c++模式设计-工厂模式
  10. listview添加列
  11. Spring Boot + Web Socket 实现扫码登录,这种方式太香了!!
  12. 思科与华为设备OSPF配置命令对比
  13. 非线性光学近似计算机应用,非线性光学.doc
  14. 五大车载操作(VOS)系统优劣对比
  15. Spring Boot 项目启动的七种方式
  16. 用ps羽化图片边缘(两种羽化图片边缘的方法)
  17. 遗传算法简单求函数最值实例
  18. js中 0 +0 -0 有什么区别?
  19. 如何用OCR文字识别软件将PDF转换成Excel
  20. 终于解决了Chrome:“喔唷,崩溃啦“

热门文章

  1. 简明易懂23种设计模式详解
  2. 计算机网路原理与应用试题,2018年10月全国自考 04741计算机网络原理历年真题试题及答案...
  3. 帅某---考研---高数笔记---汤家凤---第五章定积分
  4. python 正则匹配 手机号 QQ号 邮箱 日期 图片
  5. 普通话测试第四题评分标准_普通话水平测试最新评分标准
  6. 2022年全球市场电子设计自动化工具总体规模、主要企业、主要地区、产品和应用细分研究报告
  7. 全平台安卓源码预置GMS方法 / 全平台安卓源码预置谷歌服务方法
  8. airpods2手机不显示盒子电量
  9. 干货 | 网易大数据平台运维实战
  10. oracle dmp文件读取,从dmp文件恢复数据库