首页 > 其他分享 >FFmpeg中的音频文件的封装格式和编码格式

FFmpeg中的音频文件的封装格式和编码格式

时间:2022-10-18 10:07:57浏览次数:62  
标签:字节 标签 音频 音频文件 char MP3 格式 FFmpeg

1. FFmpeg的音频封装格式的学习

MP3是我们在日常生活中最常见的音频格式之一,也是一种音频封装格式。

1.1 查看ffmpeg支持的封装的格式列表

ffmpeg -formats | grep mp3

FFmpeg中的音频文件的封装格式和编码格式_d3

1.2 ffplay三种不同的模式来播放一个mp3文件

ffplay是以FFMPEG框架为基础,外加SDL构建的多媒体播放器。支持各种格式的音视频的播放,包括各种封装格式的音视频、以及裸音频pcm或者裸yuv数据,也可以设置音视频同步的方式(以音频为基准、以视频为基准、外部时钟)、播放时可以设置循环模式

1.2.1 普通模式

命令如下


ffplay 名称.mp3

播放音频可以通过快捷键w切换显示模式

1.2.2 波形图模式

ffplay -showmode 2 名称.mp3

2.FFmpeg的音频编码格式的学习


FFmpeg中的音频文件的封装格式和编码格式_数据_02

2.1 使用如下命令查看ffmpeg 支持的编码格式列表:

FFmpeg中的音频文件的封装格式和编码格式_封装格式_03

2.2 使用如下命令查看ffmpeg 支持的解码格式列表:

FFmpeg中的音频文件的封装格式和编码格式_封装格式_04

3. 音频的常用参数

​-aq quality 指定输出音频的质量​​​​-ar rate 指定音频采样率 (单位 Hz)
-ac channels 指定音频声道数量
-an 输出的文件不带音频
-acodec codec 指定输出的音频编码类型('copy' to copy stream)
-vol volume 指定音频的音量 (256=normal)
-af filter_graph 指定音效
-ab 指定输出音频的比特率​

4. MP3的文件结构

MP3文件大体上分为三个部分:ID3V2+音频数据+ID3V1

4.1 ID3V2

ID3V2一共有四个版本,ID3V2.1/2.2/2.3/2.4,目前流行的播放软件一般只支持第三版即ID3V2.3,由于ID3V1记录在文件的末尾处,ID3V2就只能记录在文件的首部了,也是因为这个原因,对ID3V2的操作比ID3V1要慢,而且ID3V2的结构比ID3V1的结构复杂的多,但是ID3V2可以记录更多的信息,长度可变
ID3V2.3由一个标签头和若干个标签帧或者一个扩展标签头组成,至少要有一个标签帧,每一个标签帧记录一种信息,例如作曲、标题等

4.1.1 标签头

位于文件开始处,长度为10字节,结构如下:

char Header[3]; (必须为“ID3”否则认为标签不存在)

char Ver; (版本号ID3V2.3 就记录3)

char Revision; (副版本号此版本记录为0)

char Flag; (标志字节,只使用高三位,其它位为0)

char Size[4]; (标签大小)

4.1.2 标签帧

每个标签帧都有10个字节的帧头(和标签头不是一个东西,虽然他们刚好都是10字节,标签头只有一个,每个标签帧都有一个帧头)和至少一个字节的内容构成,标签帧与标签头/其他标签帧无特殊字节分割,只能通过帧头信息来确定帧内容的大小。

帧头长度10字节,定义如下:

char ID[4]; (标识帧,说明其内容,例如作者/标题等)

char Size[4]; (帧内容的大小,不包括帧头,不得小于1)

char Flags[2]; (标志帧,只定义了6 位)

4.2 ID3V1

ID3 V1.0标准并不周全,存放的信息少,无法存放歌词,无法录入专辑封面、图片等。V2.0是一个相当完备的标准,但给编写软件带来困难,虽然赞成此格式的人很多,在软件中真正实现的却极少。绝大多数MP3仍使用ID3 V1.0标准。存在于MP3文件的末位,长度为128字节,包含作者作曲专辑等信息,并非每个MP3文件均存在ID3V1

4.3 音频数据Auido Data

每个帧都有一个帧头,长度是四个字节,帧后面可能有2字节的CRC校验,取决于帧头的第16位,为0则无校验,为1则有校验,后面是可变长度的附加信息,对于标准的MP3文件来说,其长度是32字节,紧接其后的是压缩的声音数据,当解码器读到此处时就进行解码了。

  1. 音频数据由一系列的数据帧构成
  2. 每帧的长度不一定固定,取决于MP3编码过程中采用CBR和VBR模式,即使在CBR模式下也会存在帧长度不相同的情况
  3. 每帧都包含帧头和数据实体两部分
  4. 帧头记录了MP3文件的位率,采样率和版本等信息
  5. 如果采用CRC校验,则帧头后跟随2字节CRC校验,之后可能存在32字节的附加信息,也可能无附加信息



标签:字节,标签,音频,音频文件,char,MP3,格式,FFmpeg
From: https://blog.51cto.com/u_15638660/5765253

相关文章

  • SuperMap加载三维模型数据(osgb格式)——以SuperMap iDesktop 10i为例
    目录一、生成配置文件(.scp)二、新建球面场景三、添加三维切片缓存图层 一、生成配置文件(.scp)1.1打开三维数据,配置文件,生成配置文件(如图);1.2配置文件设置(如图);①源数......
  • git commit 提交 格式化代码
    一,yarnadd--dev--exactprettier二,echo{}>.prettierrc.json三,prettier.json 文件添加buildcoverage 四,yarnaddeslint-config-prettier-D在package......
  • Python format()格式化输出方法详解
    前面章节介绍了如何使用%操作符对各种类型的数据进行格式化输出,这是早期 Python 提供的方法。自Python2.6版本开始,字符串类型(str)提供了 format()方法对字符串进行......
  • 1006 换个格式输出整数(JAVA)
    让我们用字母​​B​​​来表示“百”、字母​​S​​​表示“十”,用​​12...n​​​来表示不为零的个位数字​​n​​​(<10),换个格式来输出任一个不超过3位的正整......
  • 如何实现通过Leaflet加载dwg格式的CAD图
    前言​ 在前面介绍了通过openlayers加载dwg格式的CAD图并与互联网地图叠加,openlayers功能很全面,但同时也很庞大,入门比较难,适合于大中型项目中。而在中小型项目中,一般用开......
  • jmeter上传文件--不同文件的格式
    Jmeter上传文件上传EXCEL文件--mime里放的是application/vnd.openxmlformats-officedocument.spreadsheetml.sheet      ......
  • Dell raid 硬盘格式重装系统
    这种情况大概率都是出现在dell笔记本上,因为dell原厂默认使用的硬盘格式是raidon硬盘模式,并非我们常用的AHCI硬盘模式。raidon硬盘模式下,绝大部分PE也是无法没有raid......
  • Python F + 双引号表达式【格式化输出】
    参考链接:https://blog.csdn.net/weixin_47702737/article/details/112756957主要用于格式化输出,setting=f"{args.env}_{args.seed}"buffer_name=f"{args.buffer_nam......
  • 【上传csv格式的excel】
    一、背景介绍最近需要做一个导入,格式为.csv格式的,因为是系统间相互通信,所以限定导入格式为.csv,本篇文章做一个记录。二、过程因为功能开发比较着急,所以是以效率为前提:主要......
  • 【Oracle用法整理】日期格式字段插入/更新值
    不知道别人怎么样,反正我是每次很久不用Oracle,就会想不起来日期格式怎么保存或更新,凭着对mysql的日期使用来尝试,基本都试不对,因此整理下,方便后面查阅。1.使用系统时间插入/......