日常生活中听音乐时大多数为MP3音乐,使用FFMpeg可以解码MP3,同样FFMpeg也支持MP3编码,FFMpeg使用第三方libmp3lame即可编码MP3格式。不但如此,MP3编码还是低延迟的编码,可以支持的采样率比较多,包含44100,48000.32000,22050,24000,16000,11025,12000,8000多种采样率,采样格式也比较多,包s32p(signed32bits,planar),fltp(float,planar),s16p(signed16bits,planar)多种格式,声道布局方式支持包含mono(单声道模式),stereo(环绕立体声模式),下面就来详细介绍MP3编码参数。

MP3编码参数介绍

查看FFmpeg对于MP3的参数支持,可以通过以下命令得到MP3的参数:

ffmpeg -h encoder=libmp3lame

MP3编码参数

从图中可以看到,FFMpeg对mp3编码操作相关的参数主要包含了主要的控制参数,更高级的参数来控制,尚未全部从lame中移植到FFMpeg中,还有待开发完善。下面就来介绍FFMpeg中重点支持的这些参数的使用即基本原理。

MP3的编码质量设置

在FFMPEG中进行MP3编码采用的是第三方库libmp3lame,所以进行MP3编码时,需要设置参数acodec为libmp3lame,命令行如下:

ffmpeg -i input -acodec libmp3lame output.com

根据上面的命令行可以得到音频编码为MP3封装文件。

MP3编码的码率得到控制之后,控制质量时需要通过-qscale:a进行控制,也可以使用表中的q参数进行控制,质量不同码率也不同,详细可以参考下面表:

MP3基本信息与q参数的对应参数

表中可以作为参考,如果遇到将低码率转换为高码率的情况,则并不一定会很符合上述参数,但在大多数情况下是符合的,下面举例说明:

ffmpeg -i input.mp3 -acodec libmp3lame -q:a 8 output.mp3 

执行完上面这条命令之后,将生成的output.mp3的码率区间设置在70kbit/s至105kbit/s之间,下面将转码前的input.mp3与转码后的output.mp3做一个比价:

从以上代码可以看到,转码前的input.mp3的码率为128kbit/s,转码后的output.mp3的码率为91kbit/s。在转码过程中,从FFmpeg的输出过程信息中可以看到编码时的码率在不断地发生变动:

size=     3194kB  time=00:04:45.98   bitrate=    91.5kbits/s   speed=56.x

以上码率设置方式为VBR码率,常见的MP3编码设置为CBR,通过FFmpeg参数-b即可设置,在FFMpeg编码过程中,码率几乎不会波动:

ffmpeg -i input.mp3 -acodec libmp3lame -b:a 64k output.mp3 

执行完上述命令之后,结果将会生成编码为MP3的音频。

对比转码前与转码后的两个MP3文件;

两个文件均为CBR编码方式编码的MP3,并且可以看到编码过程中码率几乎没有波动:

size=  2235kB  time=00:04:45.98   bitrate=    64.0kbits/s   speed=43.5x

平均码率参数ABR

ABR是VBR与CBR的混合产物,表示平均码率编码,使用ABR参数之后,编码速度将会比VBR高,但是质量会比VBR的编码稍逊一些,比CBR编码好一些,在FFmpeg中,可以使用参数-abr来控制MP3编码方式:

ffmpeg -i input.mp3 -acodec libmp3lame  -b:a 64k -abr 1 oupiput.mp3

执行上面这条命令之后,编码之后的输出信息如下:

原本为64kbit/s码率的CBR编码方式的mp3音频,因为设置abr参数之后,成为ABR编码方式的MP3音频,可以观察编码过程中的输出内容:

size=    2270kb   time=00:04:45.98   bitrate= 65.0kbit/s  spedd= 42.8x 

看似VBR,其实ABR。

FFMPEG输出MP3相关推荐

  1. ffmpeg mp4 mp3 wav flac webm aac ac3 ogg格式转换

    转载自:ffmpeg mp4 mp3 wav flac webm aac ac3 ogg格式转换 - liuyihua1992 - 博客园 fmpeg是Linux中转换音频视频文件的常用工具. mp4 ...

  2. 使用FFmpeg转换mp3或wav文件为pcm格式文件

    使用FFmpeg转换mp3或wav文件为pcm格式文件 由于项目开发中需要验证pcm格式音频的播放,可以使用FFmpeg进行转换 安装时这里推荐一个便捷方式,sudo apt install smpl ...

  3. 【Android FFMPEG 开发】Android 中使用 FFMPEG 对 MP3 文件进行混音操作

    文章目录 一.前置操作 ( 移植 FFMPEG ) 二.FFMPEG 混音命令 三.Android FFMPEG 混音源代码完整示例 四.博客源码 一.前置操作 ( 移植 FFMPEG ) 参考 [A ...

  4. ffmpeg截取mp3指定时间的内容

    常在听mp3或其他格式音乐的朋友,有时会有特别喜欢的片段,例如副歌的部份会想拿来做手机的铃声.这时候就需要一些处理音效的软体,例如之前提过的Audacity.其实还有更简便的方法,只要系统中有安装好的 ...

  5. FFMpeg输出AAC

    在音频中,无论直播与点播,AAC都是目前最常用的一种音频编码格式,例如RTMP直播,HLS直播,RTSP直播,FLV直播,FLV点播,MP4点播等文件中都是常见的AAC音频. 与MP3相比,AAC是一 ...

  6. ffmpeg输出yuv的函数堆栈(h264)

    ffmpeg解码264码流输出yuv时的堆栈信息(FFMPEG2.5): main()  ffmpeg.c:3941 transcode() ffmpeg.c:3764 transcode_step( ...

  7. 使用ffmpeg对mp3格式的音频文件类型转换、截取及合并

    FFmpeg简介: FFmpeg是一个自由软件,可以运行音频和视频多种格式的录影.转换.流功能,包含了libavcodec ─这是一个用于多个项目中音频和视频的解码器库,以及libavformat-- ...

  8. ffmpeg将mp3转m4a文件

    为什么80%的码农都做不了架构师?>>>    ffmpeg -i input.mp3 -c:a libfdk_aac -vbr 5 output.m4a 参考: FFmpeg co ...

  9. ffmpeg输出x264的CBR流或者文件

    CBR(Constant Bit Rate)是以恒定比特率方式进行编码,有Motion发生时,由于码率恒定,只能通过增大QP来减少码字大小,图像质量变差,当场景静止时,图像质量又变好,因此图像质量不稳 ...

最新文章

  1. 【转载】Linux下安装、配置、启动Apache
  2. 根据HttpServletRequest request 获取当前用户ip地址和ip所属区域
  3. 神经网络十大学习率衰减提效策略
  4. MariaDB配置、集群
  5. wps完成率怎么设置_WPS表格中如何计算完成率?详细操作方法看这里!
  6. 存款利息python题_Python——GUI编程 利息计算器 作业9(python programming)
  7. .net中调用windows performance记录性能信息
  8. 我的CCNA笔记(二)
  9. 数据--第37课 - 线索化二叉树
  10. vue-cli3+element-ui+vuex+nodejs+mysql前端项目记录
  11. 一线实践 | 借助混沌工程工具 ChaosBlade 构建高可用的分布式系统
  12. 键盘按键损坏 注册表更改_如何彻底清洁键盘(不损坏任何东西)
  13. 基于多输入模型及句法结构的中文评论情感分析方法
  14. 《生命如一泓清水》俞敏洪
  15. Android studio 分渠道打包,引用不同的moudle
  16. 三维模型下构件关联类型系统展示
  17. Qt实现在QLabel上显示图片并进行线条/矩形框/多边形的绘制
  18. Python可视化库matplotlib.pyplot里contour与contourf的区别
  19. 你的工作单休,但是工资双休
  20. element表单校验

热门文章

  1. 开机grub命令修复方法linux,开机grub命令修复方法
  2. nginx域名解析部分完整源码分析
  3. vm虚拟机装2019最新kali系统(附带下载链接)
  4. Nginx 七层及四层反向代理配置
  5. 细胞自动机 二维数组的使用
  6. select下拉框默认样式修改
  7. 实战:如何像支付宝锦鲤一样设计活动奖品?
  8. 《后宫•甄嬛传》火爆背后的秘密
  9. mysql删除用户的两种方法
  10. DataReader与DataSet,DataGrid与DataList等相关知识