前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >音频知识点(9)- MP3 到底是编码格式还是封装格式?

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

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

目录

问题

正文

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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题
  • 正文
    • MP3 是封装格式
      • MP3 是编码格式
      • 结论
      相关产品与服务
      云直播
      云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档