Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >音频知识点(9)- MP3 到底是编码格式还是封装格式?

音频知识点(9)- MP3 到底是编码格式还是封装格式?

作者头像
liuzhen007
发布于 2021-12-24 11:49:00
发布于 2021-12-24 11:49:00
2.8K0
举报
文章被收录于专栏:流媒体音视频流媒体音视频

目录

问题

正文

MP3 是封装格式

MP3 是编码格式

结论

问题

MP3 是我们在日常生活中最常见的音频格式之一,但是作为音视频相关的开发人员有没有这样的疑问:MP3 到底是音频编码格式还是音频封装格式?

正文

MP3 是封装格式

mp3 是一种音频封装格式,可以从两方面验证我们的说法。首先,日常生活中,我们经常可以看到 *.mp3 的音频文件,就像视频封装格式 mp4、flv 一样。

另外,我们还可以利用第三方工具来佐证,比如使用 ffmpeg。我们都知道可以使用如下命令查看 ffmpeg 支持的封装格式列表。

ffmpeg -formats

那好,我们就过滤一下查找结果,看看其中有没有 mp3,执行命令和对应的结果如下:

liuzhen-6:bin lz$ ./ffmpeg -formats | grep mp3 ffmpeg version git-2020-06-28-4cfcfb3 Copyright (c) 2000-2020 the FFmpeg developers built with Apple clang version 11.0.0 (clang-1100.0.33.8) configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libgsm --enable-appkit --enable-avfoundation --enable-coreimage --enable-audiotoolbox libavutil 56. 55.100 / 56. 55.100 libavcodec 58. 93.100 / 58. 93.100 libavformat 58. 47.100 / 58. 47.100 libavdevice 58. 11.100 / 58. 11.100 libavfilter 7. 86.100 / 7. 86.100 libswscale 5. 8.100 / 5. 8.100 libswresample 3. 8.100 / 3. 8.100 libpostproc 55. 8.100 / 55. 8.100 DE mp3 MP3 (MPEG audio layer 3)

查询结果截图:

我们可以看到,搜索结果中是包含 mp3 的,因此说明 mp3 就是一种音频封装格式。

MP3 是编码格式

mp3 是一种音频编码格式,同样,我们可以利用 ffmpeg 验证。我们都知道可以使用如下命令查看 ffmpeg 支持的编码格式列表。

ffmpeg -encoders

我们也过滤一下查找结果,看看其中有没有 mp3,执行命令和对应的结果如下:

liuzhen-6:bin lz$ ./ffmpeg -encoders | grep mp3 ffmpeg version git-2020-06-28-4cfcfb3 Copyright (c) 2000-2020 the FFmpeg developers built with Apple clang version 11.0.0 (clang-1100.0.33.8) configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libgsm --enable-appkit --enable-avfoundation --enable-coreimage --enable-audiotoolbox libavutil 56. 55.100 / 56. 55.100 libavcodec 58. 93.100 / 58. 93.100 libavformat 58. 47.100 / 58. 47.100 libavdevice 58. 11.100 / 58. 11.100 libavfilter 7. 86.100 / 7. 86.100 libswscale 5. 8.100 / 5. 8.100 libswresample 3. 8.100 / 3. 8.100 libpostproc 55. 8.100 / 55. 8.100 A..... libmp3lame libmp3lame MP3 (MPEG audio layer 3) (codec mp3) A..... libshine libshine MP3 (MPEG audio layer 3) (codec mp3)

查询结果截图:

没错,我们也查询到了 mp3,说明 mp3 是一种音频编码格式。

注意:我们直接使用 mp3 设置音频编码类型时,ffmpeg 是不识别的,我们需要使用 libmp3lame。

接下来,我们再从另外一个方面验证一下 mp3 是音频编码格式的结论。我们都知道,任何编码器和解码器都是成对儿存在的,对于 mp3 音频格式也一样,如果存在 mp3 编码器,那么也一定存在 mp3 解码器。

没错,ffmpeg 确实提供了 mp3 对应的解码器,执行命令和对应的查询结果如下:

liuzhen-6:bin lz$ ./ffmpeg -decoders | grep mp3 ffmpeg version git-2020-06-28-4cfcfb3 Copyright (c) 2000-2020 the FFmpeg developers built with Apple clang version 11.0.0 (clang-1100.0.33.8) configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libgsm --enable-appkit --enable-avfoundation --enable-coreimage --enable-audiotoolbox libavutil 56. 55.100 / 56. 55.100 libavcodec 58. 93.100 / 58. 93.100 libavformat 58. 47.100 / 58. 47.100 libavdevice 58. 11.100 / 58. 11.100 libavfilter 7. 86.100 / 7. 86.100 libswscale 5. 8.100 / 5. 8.100 libswresample 3. 8.100 / 3. 8.100 libpostproc 55. 8.100 / 55. 8.100 A....D mp3float MP3 (MPEG audio layer 3) (codec mp3) A....D mp3 MP3 (MPEG audio layer 3) A....D mp3_at mp3 (AudioToolbox) (codec mp3) A....D mp3adufloat ADU (Application Data Unit) MP3 (MPEG audio layer 3) (codec mp3adu) A....D mp3adu ADU (Application Data Unit) MP3 (MPEG audio layer 3) A....D mp3on4float MP3onMP4 (codec mp3on4) A....D mp3on4 MP3onMP4

查询结果截图:

哈哈,果然我们的结论是正确的,确实存在 mp3 音频解码器,而且还有很多种。

结论

综上所述,mp3 既是一种音频封装格式,又是一种音频编码格式。严谨的话,在日常工作中我们需要明确的进行区分。其实,很多时候,在实际工作中,二者是经常被我们混淆的。明确了这个些概念后有哪些帮助呢,下一篇文章就为大家揭晓。

作者简介:大家好,我是 Data-Mining,是一位音视频技术爱好者,前后就职于传统广电巨头和音视频互联网公司,具有丰富的音视频直播点播相关经验,对 WebRTC、FFmpeg 和 Electron 有非常深入的了解,

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 玩转音视频 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【前后端分离】如何快速运行一个Spring Boot+Vue的前后端分离项目(保姆级图文教程))
后端环境:Java、JDK、MySQL、Navicat、Idea 前端环境:Node.js、VS Code
程序员洲洲
2025/01/17
2.9K0
【前后端分离】如何快速运行一个Spring Boot+Vue的前后端分离项目(保姆级图文教程))
如何搭建自己的SpringBoot源码调试环境?--SpringBoot源码(一)
这是SpringBoot2.1源码分析专题的第一篇文章,主要讲如何来搭建我们的源码阅读调试环境。如果有经验的小伙伴们可以略过此篇文章。
源码笔记
2020/03/07
4.1K0
如何搭建自己的SpringBoot源码调试环境?--SpringBoot源码(一)
如何搭建自己的SpringBoot源码调试环境? SpringBoot源码(一)「建议收藏」
这是SpringBoot2.1源码分析专题的第一篇文章,主要讲如何来搭建我们的源码阅读调试环境。如果有经验的小伙伴们可以略过此篇文章。
全栈程序员站长
2022/08/24
2.4K0
如何搭建自己的SpringBoot源码调试环境? SpringBoot源码(一)「建议收藏」
【SpringBoot】从环境准备到创建SpringBoot项目的全面解析.
本文对Idea版本有一定要求,如果是社区版则需在2021.1-2022.1.4,专业版则无要求. 如果已经下载的Idea不在这个范围,需要卸载干净再重装.
用户11369350
2025/05/11
2080
【SpringBoot】从环境准备到创建SpringBoot项目的全面解析.
IDE工具之IDEA中Module的创建、删除、导入
Module创建好以后,可以打开pom.xml文件,修改其springboot版本,如图所示:
猫头虎
2024/04/08
1.9K0
IDE工具之IDEA中Module的创建、删除、导入
【软件】Intellij IDEA 导入maven web项目并部署到Tomcat
本文中所使用的IDEA版本为14.1.1, 所使用测试项目为sping mvc的一个最简单的示例, 可以在这里下载示例代码
零式的天空
2022/03/22
2.7K0
【玩转腾讯云】本地JavaWeb项目部署到腾讯云轻量服务器,实现公网访问
本次教程,Tomcat项目打包成war包到服务器上发布,Springboot项目打包为jar或war包到服务器上发布:
Mintimate
2021/04/06
14.2K0
【玩转腾讯云】本地JavaWeb项目部署到腾讯云轻量服务器,实现公网访问
搭建SpringBoot源码环境的正确姿势(避坑必备)
最近打算拉取SpringBoot源码,各种编译报错,各种问题。参考很多网上的教程,仍然是各种错误。
明明如月学长
2021/08/27
1.8K0
Maven最全最细教程
https://www.cnblogs.com/hzg110/p/6936101.html
KEN DO EVERTHING
2019/04/24
9200
Maven最全最细教程
全网最细的SpringBoot系列教程-不一样的Hello
第1篇:SprintBoot的前世今生稍后会奉上,本篇是SpringBoot系列的第2篇文章,在后面系列的教程中,会详细分享SpringBoot生态圈中的各个成员,例如:
小码匠
2022/06/16
4720
全网最细的SpringBoot系列教程-不一样的Hello
听说你还没学Spring就被源码编译劝退了?30+张图带你玩转Spring编译
https://github.com/spring-projects/spring-framework/wiki/Build-from-Source
程序员DMZ
2020/07/06
9490
SpringBoot框架基础知识
SpringBoot框架可以简单的理解为是一个“增强版的SpringMVC框架,极大程度的简化了各种配置,默认就已经集成了绝大部分常用的依赖”。
海拥
2021/08/23
5980
IDEA中通过docker插件部署springboot项目
Windows安装文件:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/
吟风者
2019/07/25
3.1K0
IDEA中通过docker插件部署springboot项目
SpringBoot入门建站全系列(一)项目建立
个人对SpringBoot的理解:就是一Spring大杂烩,把Spring的一些组件,或者跟Spring有联系的组件整合在一起,方便使用。
品茗IT
2019/07/31
7420
Maven 最全教程,看了必懂,99% 的人都收藏了!
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/03/04
1.8K0
IDEA 导入web项目
你会发现如果该项目已经被 IDEA 确定为 web 项目,文件夹的右下角会有一个黑色的标记。
wsuo
2020/07/30
8.3K0
IDEA 导入web项目
springboot项目导入idea中如何部署启动_idea怎么导入javaweb项目
最近公司要求开发工具要用Idea,作为一个eclipse的老员工,记录一下Idea中遇到的坑
全栈程序员站长
2022/11/07
1.7K0
springboot项目导入idea中如何部署启动_idea怎么导入javaweb项目
springBoot入门简介,使用spring initializer快速创建spring Boot项目
传统“单体”spring缺点:许多应用结合在一起,牵一发而动全身。一个小小的bug修改,或者日益增长的需求变更都需要停止服务重新启动。
全栈程序员站长
2022/08/09
1.7K0
springBoot入门简介,使用spring initializer快速创建spring Boot项目
如何在IntelJ下用Maven创建一个Web项目
相信一开始做Web项目的同学都是直接把项目包放在WEB-INF/lib目录下,然后就开始做项目了。但是之后接触了一些使用了Maven进行包管理的项目,我们就不得不学一学如何用Maven做包管理。 在网上看了很多的文章,发现都不是很全面,因此就把自己摸索的过程记录下来,希望对大家有帮助。本文主要记录如何从无包管理的项目开发模式转到使用Maven进行项目包管理。 做编程的,对于新的知识,先运行起来再说,而不是去深究其原理。我们这里用Maven搭建一个简单的Web项目,让其可以运行起来。这可以让我们对Maven有
陈树义
2018/04/13
6590
如何在IntelJ下用Maven创建一个Web项目
第一章:用一个HelloWord来阐述SpringBoot的简单与快速简介 本章目的系统要求开始构建项目项目目录结构初尝试运行项目编写HelloWordController总结
简介 对spring框架盛行了多年的java方向开发人员来说,每个人java开发已经把spring框架当做开发中不可或缺的一部分。之前传统的模式都是以applicationContext.xml配置文件的形式存在,而对应大多数入门级开发人员来说配置出现一点纰漏就会导致运行失败或者更大的问题,因此会浪费开发人员很多宝贵的时间,对公司来说也是有所损失。那么spring开源组织很早之前就意识到这种问题的存在,于是他们便对spring框架的全系列组件进行了内部封装。对外只是提供maven(jar管理、项目打包工
恒宇少年
2018/06/27
6650
推荐阅读
相关推荐
【前后端分离】如何快速运行一个Spring Boot+Vue的前后端分离项目(保姆级图文教程))
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档