【读书会第13期】第四章音频文件的封装格式和编码格式笔记

举报
suifeng1324 发表于 2022/07/13 19:21:20 2022/07/13
【摘要】 笔记参考来源:https://education.huaweicloud.com/courses/course-v1:HuaweiX+CBUCNXLO005+Self-paced/courseware/d9fd955c56a54f858d53a2fe686c853c/e69d9efcc3814cdc8e5b594ff4884cbe/ FFmpeg的音频封装格式MP3是我们在日常生活中最常见的...

笔记参考来源:https://education.huaweicloud.com/courses/course-v1:HuaweiX+CBUCNXLO005+Self-paced/courseware/d9fd955c56a54f858d53a2fe686c853c/e69d9efcc3814cdc8e5b594ff4884cbe/

FFmpeg的音频封装格式

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

日常生活中,我们经常可以看到*.mp3的音频文件,就像mp4、flv的视频封装格式一样。

MP3 封装格式

使用如下命令查看ffmpeg 支持的封装格式列表:

ffmpeg -f | grep mp3

MP3封装格式

使用如下命令播放一个mp3音乐文件:
普通模式:

ffplay input.mp3

波形图模式:

fplay -showmode 1 intput.mp3

频谱图模式:

ffplay -showmode 2 intput.mp3

FFmpeg的音频编码格式

FFmpeg 支持很多编码格式,包括MP3、AAC、AC3等。

通过libavutil/samplefmt.h中查看该版本中支持以下音频格式

enum AVSampleFormat {
    AV_SAMPLE_FMT_NONE = -1,
    AV_SAMPLE_FMT_U8,          ///< unsigned 8 bits
    AV_SAMPLE_FMT_S16,         ///< signed 16 bits
    AV_SAMPLE_FMT_S32,         ///< signed 32 bits
    AV_SAMPLE_FMT_FLT,         ///< float
    AV_SAMPLE_FMT_DBL,         ///< double
    AV_SAMPLE_FMT_U8P,         ///< unsigned 8 bits, planar
    AV_SAMPLE_FMT_S16P,        ///< signed 16 bits, planar
    AV_SAMPLE_FMT_S32P,        ///< signed 32 bits, planar
    AV_SAMPLE_FMT_FLTP,        ///< float, planar
    AV_SAMPLE_FMT_DBLP,        ///< double, planar
    AV_SAMPLE_FMT_S64,         ///< signed 64 bits
    AV_SAMPLE_FMT_S64P,        ///< signed 64 bits, planar
    AV_SAMPLE_FMT_NB           ///< Number of sample formats. DO NOT USE if linking dynamically
};

MP3编码格式

MP3 也是一种音频编码格式。
和视频不同,视频编码格式,比如H264,一般会封装MP4或者FLV这种封装格式中被使用。音频编码格式MP3,则是封装在同名的MP3的封装格式中。二者容易混淆,注意区分。
使用如下命令查看ffmpeg 支持的编码格式列表:

ffmpeg -encoders| grep mp3

mp3截取

ffmpeg -y -i input.mp3 -ss 00:00:00 -t 00:00:03 -acodec copy output_mp3.mp3

  参数说明

          -y :     允许覆盖

          -i input.mp3:  源文件

         -ss 00:00:00:   开始时间

         -t 00:00:03:   截取音频时间长度

         -acodec copy:编码格式复制

mp3转pcm

ffmpeg -y -i input.mp3 -acodec pcm_s16le -f s16le -ac 2 -ar 16000 16k.pcm

 参数说明

      -y:  允许覆盖

      -i input.mp3:  源文件

      -acodec pcm_s16le: 编码器

      -f s16le:  强制文件格式

      -ac 2: 双声道

      -ar 16000: 采样率

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文件均存在
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。