如何实现多路同时MP3编码,解决libmp3lame转换wav单声道变快,处理双声道和单声道PCM输入QQ35744025

之前写过一篇《如何实现多路同时MP3编码》(地址https://blog.csdn.net/xjb2006/article/details/78404523   ) 

那篇主要使用了intel的ipp技术,今天写下更简单而且功能强大的mp3编码库,也可以实现同样的功能:

这里处理了双声道和单声道:

BYTE mp3_buffer[4096*5];

    int write = 0;
    if(channel==2)
        write=lame_encode_buffer_interleaved(lame,(short*)pData,nAudioLen/4 , mp3_buffer, sizeof(mp3_buffer));
    else
        write = lame_encode_buffer(lame, (short*)pData, NULL,nAudioLen/2, mp3_buffer, sizeof(mp3_buffer));
    if(write>0)
        fwrite(mp3_buffer, write, 1, mp3);

 

lame_encode_buffer_interleaved是写的双声道混合,lame_encode_buffer写左右声道分开。

再贴一些初始化的代码吧:

     lame_t lame;

    lame = lame_init();
    int nV=lame_get_version(lame);
    //lame_init_bitstream(lame);
    lame_set_in_samplerate(lame, 22050);
    lame_set_out_samplerate(lame, 22050);
    lame_set_num_channels(lame, 1);
    lame_set_brate(lame,64);
    lame_set_quality(lame,2);
    lame_init_params(lame);

 

很简单,很强大,直接支持采样率从8000到48000HZ,根据不同采样率设置不同的版本,如8000设置为版本2.5

什么时候找个时间上传代码上去,最后打个广告:

需要合作的联系QQ35744025,本人03年从事工作,“精通”音视频应用编程技术(勉强加个精通,吸引眼球,哈哈),精通VC,MFC,多媒体教学软件,录播软件,直播软件的核心技术大部分已掌握,如ffmpeg技术,MP4,FLV编码合成,H264,AAC,MP3,可以运用IPP进行高效图像空间转换等,可以运用INTEL和cuda进行硬件H264编解码,可以实现240帧1080P实时编码,完全同步及平滑度极高,rtmp直播推送,rtmp服务器,YV12,YUV422,NV12,RGB24,RGB32熟悉转换,缩放,wav,AAC, mp3的编码解码,视频切换特效算法,视频水印,LOGO,文字。屏幕截取录像,摄像头捕获录像,D3D高效视频图像显示,OPENCV,图像库ximage,GDI,GDIPLUS熟练应用,语音识别及文字转换,人脸识别及匹配,局域网内远程控制,音视频实时通话,声卡捕获回放等,另外SQL数据库,ACCESS,EXCEL数据库,DOC,PDF文件打开提取,FTPServer,Client,以上所有代码均已商用。

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊,一直没有仔细统计过,原来我也学会了这么多东西了啊,真佩服自己啊

在Windows下使用C语言调用libmp3lame库来实现wav音频文件压缩为MP3格式,音频参数为11025Hz采样率和8位音频位深。下面是一个简单的实现步骤: 1. 首先,需要下载并安装libmp3lame库。可以在lame官方网站上找到适合Windows系统的库文件,并将其解压到合适的位置。 2. 在C代码中引入libmp3lame库的头文件,例如: #include <lame.h> 3. 创建并初始化lame_t结构体,以便进行编码设置: lame_t lame = lame_init(); lame_set_in_samplerate(lame, 11025); // 设置输入采样率 lame_set_num_channels(lame, 1); // 设置输入的通道数为1 lame_set_brate(lame, 8); // 设置压缩后的比特率 4. 打开输入和输出文件: FILE *input_file = fopen("input.wav", "rb"); // 打开输入wav文件 FILE *output_file = fopen("output.mp3", "wb"); // 打开输出mp3文件 5. 读取输入数据,并将其编码MP3格式: short int pcm_buffer[8192]; unsigned char mp3_buffer[8192]; int read; int write; do { read = fread(pcm_buffer, sizeof(short int), 8192, input_file); // 读取输入数据 if (read == 0) { write = lame_encode_flush(lame, mp3_buffer, 8192); // 编码剩余数据 } else { write = lame_encode_buffer_interleaved(lame, pcm_buffer, read, mp3_buffer, 8192); // 编码输入数据 } fwrite(mp3_buffer, sizeof(unsigned char), write, output_file); // 将编码后的数据写入输出文件 } while (read != 0); 6. 清理和关闭: lame_close(lame); // 关闭lame编码器 fclose(input_file); // 关闭输入文件 fclose(output_file); // 关闭输出文件 通过以上步骤,就可以使用libmp3lame库来实现将11025Hz采样率和8位音频位深的wav音频文件压缩为MP3格式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周星星的星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值