ffmpeg 安装libmp3lame 编码集

本文详细介绍了如何下载并编译配置libmp3lame源码及将其整合进FFmpeg的过程,包括了解压、配置、编译等步骤,并针对使用libmp3lame编码时出现的“output buffer too small”错误提供了具体的解决方案。

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

提醒:要注意红色标注的部分哦
1.下载libmp3lame源码:http://lame.sourceforge.net/download.php (我的版本:lame-3.99.5.tar.gz)

2.解压lame-3.99.5.tar.gz  到lame-3.99.5,

3.编译安装libmp3lame编码集:./configure --prefix=/static --disable-shared --enable-static (/static   这个路径要记住,后面我们要用到),然后make,make install ,

4.编译ffmpeg:./configure --prefix=/usr/local/ffmpeg --enable-shared  --enable-libmp3lame 
  --extra-cflags=-I/static/include --extra-ldflags=-L/static/lib,发现了吗。这里的/static就是上面我们设置的目录,我这里是只加入了libmp3lame这一种编码集,同时有多编码集的情况由于时间问题本人还没有测试,(好像是多个extra-cflags和extra-ldflags-_-)

5.make ffmpeg,
6.测试:ffmpeg -i daodai.mp3  -ab 64000 -ar 44100 -acodec libmp3lame ceshi1.mp3

转换中使用libmp3lame编码时提示错误:
lame: output buffer too small
解决办法:
1.找到/ffmpeg/libavcodec/libmp3lame.c这个文件
2.结构体增加一个成员
typedef struct Mp3AudioContext {
    lame_global_flags *gfp;
    int stereo;
    uint8_t buffer[BUFFER_SIZE];
    int buffer_index;
    int flushed;
} Mp3AudioContext;
3.把函数MP3lame_encode_frame里面这几行修改为这样
if(data){
        if (s->stereo) {
            lame_result = lame_encode_buffer_interleaved(
                s->gfp,
                data,
                avctx->frame_size,
                s->buffer + s->buffer_index,
                BUFFER_SIZE - s->buffer_index
                );
        } else {
            lame_result = lame_encode_buffer(
                s->gfp,
                data,
                data,
                avctx->frame_size,
                s->buffer + s->buffer_index,
                BUFFER_SIZE - s->buffer_index
                );
        }
        s->flushed = 0;
    }else{
        if (s->flushed)
            lame_result = 0;
        else {
            s->flushed = 1;
        lame_result= lame_encode_flush(
                s->gfp,
                s->buffer + s->buffer_index,
                BUFFER_SIZE - s->buffer_index
                );
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值