FFMPEG输出MP3

本文介绍了FFmpeg如何使用libmp3lame库进行MP3编码,包括设置编码器参数、控制编码质量和码率。通过-qscale:a或q参数调整质量,使用-abr设置平均码率编码。示例命令展示了VBR、CBR和ABR三种编码方式的使用,以及码率波动情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  日常生活中听音乐时大多数为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。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值