今天主要学习内容知识点回顾:
MP3 是我们在日常生活中最常见的音频格式之一,也是一种音频封装格式。日常生活中,我们经常可以看到 *.mp3 的音频文件,就像 mp4、flv 的视频封装格式一样。掌握FFmpeg查看音视频媒体信息的方法 今日重点MP3 封装格式
MP3 封装格式
FFmpeg的音频编码格式
MP3 编码格式
MP3 文件结构
1.MP3 封装格式
封装就是把编码器生成的多媒体文件,如视频,音频,字幕按照一定的标准混合封装在一起。
//使用如下命令查看 ffmpeg 支持的封装格式列表
//mac用
ffmpeg -formats | grep mp3
//win 用
ffmpeg -formats | findstr mp3
//使用如下命令播放一个 mp3 音乐文件
//普通模式
ffplay C:\ffmpeg\bin\小兔子乖乖.mp3
//波形图模式:
ffplay -showmode 1 C:\ffmpeg\bin\小兔子乖乖.mp3
//频谱图模式:
ffplay -showmode 2 C:\ffmpeg\bin\小兔子乖乖.mp3
普通模式 ffplay C:\ffmpeg\bin\小兔子乖乖.mp3
波形图模式:ffplay -showmode 1 C:\ffmpeg\bin\小兔子乖乖.mp3
频谱图模式:ffplay -showmode 2 C:\ffmpeg\bin\小兔子乖乖.mp3
常用封装格式
图片来源:android音视频 作者:adolph_lu
2.FFmpeg的音频编码格式
音频编码的主要作用是将音频采样数据(PCM等)压缩成为音频码流,从而降低音频的数据量,偏于存储和传输。
FFmpeg 支持很多编码格式,包括 MP3、AAC、AC3 等。
3.MP3 编码格式
MP3既是封装格式又是编码格式
MP3 也是一种音频编码格式。和视频不同,视频编码格式,比如 H264,一般会封装 MP4 或者 FLV 这种封装格式中被使用。音频编码格式 MP3,则是封装在同名的 MP3 的封装格式中。二者容易混淆,注意区分。 //使用如下命令查看 ffmpeg 支持的编码格式列表
ffmpeg -encoders| grep mp3
//使用如下命令查看 ffmpeg 支持的解码格式列表
ffmpeg -decoders| grep mp3
使用如下命令查看 ffmpeg 支持的编码格式列表 win用 ffmpeg -encoders| findstr mp3
使用如下命令查看 ffmpeg 支持的解码格式列表 win用 ffmpeg -decoders| findstr mp3
4.MP3 文件结构
ID3V2:位于MP3文件的首部(文件头),包含作者,作曲,专辑等信息,长度不固定,是对ID3V1的扩展,并非每个MP3文件均存在ID3V2。
Auido Data:
1.音频数据由一系列的数据帧构成。
2.每帧的长度不一定固定,取决于MP3编码过程中采用CBR和VBR模式,即使在CBR模式下也会存在帧长度不相同的情况。
3.每帧都包含帧头和数据实体两部分。
4.帧头记录了MP3文件的位率,采样率和版本等信息。
5.如果采用CRC校验,则帧头后跟随2字节CRC校验,之后可能存在32字节的附加信息,也可能无附加信息。
ID3V1:存在于MP3文件的末位,长度为128字节,包含作者作曲专辑等信息,并非每个MP3文件均存在ID3V1。
头部 ID3v2 可以不存在 在文件开始的位置,包含了作者、作曲、专辑等信息,长度不固定,扩展了ID3v1的信息。
音频数据 数据帧 必须的 音频数据帧,在文件的中间位置,长度个数不定。
尾部ID3v1可以不存在 包含了作者,作曲,专辑等信息,长度为128Byte。
ID3v2、ID3v1非必须的;在音频处理中,纯数据帧的MP3文件也比较常见。
将MP3文件以十六进制的形式打开,可以看到文件前10个字节为 49 44 33 04 00 00 00 00 00 231、identifier
49 44 33,是ID3的意思,表示这是一个ID3v2
2、version
04 00为它的版本号:第一个字节为主版本:4,第二个字节为修订号:0
有ID3信息
无ID3信息
ID3v2 中文文档ver2.3.0