前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
「小程序JAVA实战」小程序视频处理工具ffmpeg(47)
前面已经把视频成功的上传到我们的服务器,选择了背景音乐的ID,现在需要把视频和背景音乐进行合并,需要使用一个工具ffmpeg。源码:https://github.com/limingios/wxPro
IT架构圈
2019/07/08
1.4K0
「小程序JAVA实战」小程序视频处理工具ffmpeg(47)
【FFmpeg】ffmpeg 命令行参数 ② ( Windows 环境中 ffmpeg 命令行输出文本搜索 -findstr 用法 | -findstr 搜索文本字符串用法 | 输出命令行到文件中 )
在 Windows 命令行中 , 执行 ffmpeg 命令 , 有可能 在命令行中输出大量信息 ;
韩曙亮
2024/02/23
5460
【FFmpeg】ffmpeg 命令行参数 ② ( Windows 环境中 ffmpeg 命令行输出文本搜索 -findstr 用法 | -findstr 搜索文本字符串用法 | 输出命令行到文件中 )
FFmpeg常用命令行讲解及实战一
上图红框内为编译选项,编译选项支持编解码的格式、封装的格式及网络协议等等第三方包。其中比较常用的:
Gnep@97
2023/11/21
1.8K0
FFmpeg常用命令行讲解及实战一
开源流媒体服务器SRS学习笔记(1) - 安装、推流、拉流
SRS(Simple RTMP Server) 是国人写的一款非常优秀的开源流媒体服务器软件,可用于直播/录播/视频客服等多种场景,其定位是运营级的互联网直播服务器集群。
菩提树下的杨过
2019/09/12
11.4K0
FFmpeg从入门到精通-云享读书会
FFmpeg是一款开源软件,用于生成处理多媒体数据的各类库和程序。FFmpeg可以转码、处理视频和图片(调整视频、图片大小,去噪等)、打包、传输及播放视频。作为最受欢迎的视频和图像处理软件,它被来自各行各业的不同公司所广泛使用。
DS小龙哥
2022/10/06
5.4K0
FFmpeg从入门到精通-云享读书会
C语言字符串处理提取时间(ffmpeg返回的时间字符串)
需求:有一个 “00:01:33.90” 这样格式的时间字符串,需要将这个字符串的时间值提取打印出来(提取时、分、秒、毫秒)。
DS小龙哥
2023/12/26
2740
C语言字符串处理提取时间(ffmpeg返回的时间字符串)
编译支持MP3与H264编码的ffmpeg
ffmpeg原有的系统中支持mp3和h264的解码,但是编码并不支持,所以,需要是应用第三方插件进行支持;
用户3765803
2019/03/05
2.7K0
【FFmpeg】ffmpeg 命令行参数 ⑤ ( 使用 ffmpeg 命令提取 音视频 数据 | 保留封装格式 | 保留编码格式 | 重新编码 )
使用 ffmpeg 命令 从 视频数据 中 提取 音频数据 / 视频数据 保留封装格式 , 封装格式 指的就是 封装 视频数据 的 容器 ;
韩曙亮
2024/03/12
1.4K0
【FFmpeg】ffmpeg 命令行参数 ⑤ ( 使用 ffmpeg 命令提取 音视频 数据 | 保留封装格式 | 保留编码格式 | 重新编码 )
【FFmpeg】ffmpeg 命令行参数 ① ( ffpeg 命令 -i 参数 指定 输入文件 / 输入流 | ffpeg 命令 -f 参数 指定 输出格式 | 指定 时间 相关参数 )
在 【FFmpeg】Windows 搭建 FFmpeg 命令行运行环境 博客中 , 搭建 FFmpeg 命令行 运行环境 , 就可以在 任意 目录位置 , 执行 ffmpeg 命令 ,
韩曙亮
2024/02/17
3.4K0
【FFmpeg】ffmpeg 命令行参数 ① ( ffpeg 命令 -i 参数 指定 输入文件 / 输入流 | ffpeg 命令 -f 参数 指定 输出格式 | 指定 时间 相关参数 )
【Android FFMPEG 开发】Android 中执行 FFMPEG 指令 ( 集成 mobile-ffmpeg 框架 | 完整代码示例 )
在 Android Studio 工程 根目录的 build.gradle 构建脚本中 , 配置
韩曙亮
2023/03/30
1.2K0
【Android FFMPEG 开发】Android 中执行 FFMPEG 指令 ( 集成 mobile-ffmpeg 框架 | 完整代码示例 )
DeepFaceLab坑之ffmpeg
DeepFaceLab是一款支持视频或图片的换脸开源软件,其使用非常简单,有官方的juptyer notebook案例,这里不做过多的教程介绍。
用户3578099
2019/09/19
1.8K0
DeepFaceLab坑之ffmpeg
Linux——安装ffmpeg
当前服务器环境是Alibaba Cloud Linux release 3 (Soaring Falcon) ,无法直接安装ffmpeg,也不想自己去编译安装,所以这里直接使用rpmfusion源来进行安装。
思索
2025/05/06
2550
FFmpeg深入学习
上文主要讲解了 FFmpeg 相关知识,以及在 Windows 下编译 FFmpeg 源码,本文继续对 FFmpeg 进行更深入的介绍。
Gnep@97
2023/09/15
7600
FFmpeg深入学习
FFmpeg封装格式处理
这几篇文章内容联系紧密,但放在一篇文章里内容太长,遂作拆分。章节号不作调整。基于FFmpeg 4.1版本。
叶余
2019/04/02
3.2K0
FFmpeg封装格式处理
PHP 将amr音频文件转换为mp3格式
2、使用ffmpeg -i 指令来转换amr为mp3格式(这个到时候写在PHP代码中,使用exec函数执行即可)
超级小可爱
2023/02/20
2.1K0
【FFmpeg】ffmpeg 命令行参数 ③ ( ffmpeg 音频参数解析 | 设置音频帧数 | 设置音频码率 | 设置音频采样率 | 设置音频通道数 | 设置音频编解码器 | 设置音频过滤器 )
在 ffmpeg 命令中 , -aframes 参数用于设置 要输出的 音频帧 帧数 , 通过该参数 设置 一个 指定的 音频帧数 , 输出完 该 指定音频帧数 的 音频帧 之后 , ffmpeg 将会停止处理音频流 , 通过该参数 可以 精确控制音频输出长度 ;
韩曙亮
2024/02/29
5K0
【FFmpeg】ffmpeg 命令行参数 ③ ( ffmpeg 音频参数解析 | 设置音频帧数 | 设置音频码率 | 设置音频采样率 | 设置音频通道数 | 设置音频编解码器 | 设置音频过滤器 )
【FFmpeg】ffmpeg 命令行参数 ⑧ ( 使用 ffmpeg 转换封装格式 | 音视频编解码器参数设置 | 视频 帧率 / 码率 / 分辨率 设置 | 音频 码率 / 采样率 设置 )
音视频 文件 从 采样 -> 处理 -> 得到原始数据帧队列 -> 音视频编码 -> 音视频包队列 -> 格式封装 的过程如下 :
韩曙亮
2024/04/02
4.2K0
【FFmpeg】ffmpeg 命令行参数 ⑧ ( 使用 ffmpeg 转换封装格式 | 音视频编解码器参数设置 | 视频 帧率 / 码率 / 分辨率 设置 | 音频 码率 / 采样率 设置 )
macos安装ffmpeg以及出现问题
就是freetype动态库指定的目录不存在,或许没有安装,使用brew命令安装,显示已经安装,重新卸载安装也不行 但是安装完成之后也不行,一直报错 执行命令报错:
py3study
2020/01/03
5.1K0
C++与音视频处理:处理音频和视频数据的编码和解码
音视频处理在现代多媒体应用中起着重要的作用。C++是一种强大且广泛使用的编程语言,提供了许多用于处理音频和视频数据的库和工具。本文将介绍C++中常用的音频和视频编码解码技术,以及相关的库和工具。
大盘鸡拌面
2023/12/04
1.1K0
ffmpeg安装失败_linux离线安装ffmpeg
./configure –enable-static –enable-version3 –enable-gpl –enable-nonfree –enable-libfdk-aac –enable-libopencore-amrnb –enable-libopencore-amrwb –enable-libvo-amrwbenc –enable-libilbc –enable-libvpx –enable-libx264 –enable-libopenjpeg –enable-pic –enable-libass –enable-libvpx –enable-libx265
全栈程序员站长
2022/10/02
6.9K0
推荐阅读
「小程序JAVA实战」小程序视频处理工具ffmpeg(47)
1.4K0
【FFmpeg】ffmpeg 命令行参数 ② ( Windows 环境中 ffmpeg 命令行输出文本搜索 -findstr 用法 | -findstr 搜索文本字符串用法 | 输出命令行到文件中 )
5460
FFmpeg常用命令行讲解及实战一
1.8K0
开源流媒体服务器SRS学习笔记(1) - 安装、推流、拉流
11.4K0
FFmpeg从入门到精通-云享读书会
5.4K0
C语言字符串处理提取时间(ffmpeg返回的时间字符串)
2740
编译支持MP3与H264编码的ffmpeg
2.7K0
【FFmpeg】ffmpeg 命令行参数 ⑤ ( 使用 ffmpeg 命令提取 音视频 数据 | 保留封装格式 | 保留编码格式 | 重新编码 )
1.4K0
【FFmpeg】ffmpeg 命令行参数 ① ( ffpeg 命令 -i 参数 指定 输入文件 / 输入流 | ffpeg 命令 -f 参数 指定 输出格式 | 指定 时间 相关参数 )
3.4K0
【Android FFMPEG 开发】Android 中执行 FFMPEG 指令 ( 集成 mobile-ffmpeg 框架 | 完整代码示例 )
1.2K0
DeepFaceLab坑之ffmpeg
1.8K0
Linux——安装ffmpeg
2550
FFmpeg深入学习
7600
FFmpeg封装格式处理
3.2K0
PHP 将amr音频文件转换为mp3格式
2.1K0
【FFmpeg】ffmpeg 命令行参数 ③ ( ffmpeg 音频参数解析 | 设置音频帧数 | 设置音频码率 | 设置音频采样率 | 设置音频通道数 | 设置音频编解码器 | 设置音频过滤器 )
5K0
【FFmpeg】ffmpeg 命令行参数 ⑧ ( 使用 ffmpeg 转换封装格式 | 音视频编解码器参数设置 | 视频 帧率 / 码率 / 分辨率 设置 | 音频 码率 / 采样率 设置 )
4.2K0
macos安装ffmpeg以及出现问题
5.1K0
C++与音视频处理:处理音频和视频数据的编码和解码
1.1K0
ffmpeg安装失败_linux离线安装ffmpeg
6.9K0
相关推荐
「小程序JAVA实战」小程序视频处理工具ffmpeg(47)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档