PCM转MP3音频文件(借助lame库)

音视频开发9. 使用ffmpeg 将pcmmp3实践(C++) @[TOC](音视频开发9. 使用ffmpeg 将pcmmp3实践(C++)) 一、准备环境 CentOS环境 安装 ffmpeg ,并有必要的(主要是lame:mp3解码) ffmpeg安装可参考之前文档 二、一些预备知识 1. 音频格式说明 如前文所述,pcm音频裸数据,要mp3需要进行重采样、编码步骤。 2. 参考命令行 ffmpeg -y -ac 1 -ar 16000 -f s16le -i /data/ffmpeg/test/input.pcm -c:a libmp3lam 阅读详情

pcm2mp3.c

#include <stdio.h>
#include <stdlib.h>
#include <lame.h>

#define INBUFSIZE 4096
#define MP3BUFSIZE (int) (1.25 * INBUFSIZE) + 7200

int encode(char* inPath, char* outPath) 
{
	int status = 0;
	lame_global_flags* gfp;
	int ret_code;
	FILE* infp;
	FILE* outfp;
	short* input_buffer;
	int input_samples;
	char* mp3_buffer;
	int mp3_bytes;

	gfp = lame_init();
	if (gfp == NULL) 
	{
		printf("lame_init failed/n");
		status = -1;
		goto exit;
	}

	ret_code = lame_init_params(gfp);
	if (ret_code < 0) 
	{
		printf("lame_init_params returned %d/n",ret_code);
		status = -1;
		goto close_lame;
	}

	infp = fopen(inPath, "rb");
	outfp = fopen(outPath, "wb");

	input_buffer = (short*)malloc(INBUFSIZE*2);
	mp3_buffer = (char*)malloc(MP3BUFSIZE);

	do
	{
		input_samples = fread(input_buffer, 2, INBUFSIZE, infp);
		printf("input_samples is %d./n",input_samples);
		//fprintf(stderr, "input_samples is %d./n", input_samples);
		mp3_bytes = lame_encode_buffer_interleaved(gfp, input_buffer,input_samples/2, mp3_buffer, MP3BUFSIZE);
		//fprintf(stderr, "mp3_bytes is %d./n", mp3_bytes);
		if (mp3_bytes < 0) 
		{
			printf("lame_encode_buffer_interleaved returned %d/n", mp3_bytes);
			status = -1;
			goto free_buffers;
		} 
		else if(mp3_bytes > 0) 
		{
			fwrite(mp3_buffer, 1, mp3_bytes, outfp);
		}
	}while (input_samples == INBUFSIZE);

	mp3_bytes = lame_encode_flush(gfp, mp3_buffer, sizeof(mp3_buffer));
	if (mp3_bytes > 0) 
	{
		printf("writing %d mp3 bytes/n", mp3_bytes);
		fwrite(mp3_buffer, 1, mp3_bytes, outfp);
	}
free_buffers:
	free(mp3_buffer);
	free(input_buffer);

	fclose(outfp);
	fclose(infp);
close_lame:
	lame_close(gfp);
exit:
	return status;
}

int main(int argc, char** argv) 
{
	if (argc < 3) 
	{
		printf("usage: lame_test rawinfile mp3outfile/n");
	}
	encode(argv[1], argv[2]);
	return 0;
}



Android集成LAME,实现pcmmp3 Android借助LAME实现MP3编码 阅读详情

相关推荐

iOS 通过(lame)将录制音频转换Mp3

载请注明出处,保留原帖地址及作者署名. Url:http://blog.csdn.net/ysy441088327/article/details/7392842#reply Author:余书懿 为了达到 iPhone 与 Android 实现音频互通. 那么Mp3格式的音频文件再好不过了. 至于能够转换成Amr 是最好,10秒 的 一个Amr文件 只有5K左右

余书懿 4万+

PCMmp3

这是一个实时采集话筒PCM音频流并转换MP3格式文件的代码,标准音频转换,支持高码率和低码率。

Android NDK之Lame初探

之前在做车载语音微信项目的时候,基于网页版微信原理,同时新增了一些功能,比如可以发送语音消息,由于微信网页版没有提供这个功能,所以在这里现将录音消息传到讯飞的车载服务服务器,然后获取URL,只发送URL就可以了。由于录音数据为pcm格式,pcmwav比较容易,直接加个头文件就可以了,但是wavmp3呢,在这里我是用了比较出名的MP3 EncoderLame,在使用Lame的时候重新编译打包

wjk7186912的专栏 3015

lamejs:javascript中的mp3编码器

lamejs 用JavaScript编写的快速mp3编码器。 在我的机器上,无论是在节点上还是在Chrome上,它的工作速度都比实时速度快20倍(它将在6.5秒内编码132秒的长样本)。 lamejs是对jump3r-code的重写,而后者是对libmp3lame的重写。 安装 要通过Bower或npm安装,只需执行以下操作: $ bower install lamejs --save $ npm install lamejs 快速开始 < script src = 'lame.all.js' > < / script > < script > var mp3Data = [ ] ; var mp3encoder = new lamejs . Mp3Encoder ( 1 , 44100 , 128 ) ; //mono 44.1khz encode to 128kbps var sa

C++实现将PCM文件转换MP3文件

PCM文件转换MP3文件的过程涉及音频编码和压缩。下面是对实现该过程的原理、底层架构、流程图、使用场景、代码示例以及一些相关的文献材料链接和正在使用的产品的概述。音频播放器和设备:许多音频播放器和设备支持MP3格式,因此将PCM文件转换MP3文件可以确保在这些设备上播放和兼容性。音频传输:在音频流媒体领域,通过将PCM转换MP3流,可以有效地减少带宽占用和传输成本,提供更好的网络传输性能。音频码:在音频处理和存储中,将PCM文件转换MP3文件可以显著减小音频文件的大小,从而节省存储空间。

走向CTO的路上... 936

js将blob为pcm格式转换MP3格式

2.使用Web Audio API创建一个AudioContext对象和一个AudioBufferSourceNode对象。3.将ArrayBuffer对象传递给AudioContext对象并解码为AudioBuffer对象。请注意,此代码示例需要使用lamejs来进行MP3编码。4.使用lamejs将AudioBuffer对象编码为MP3格式。5.将MP3数据作为Blob对象返回。

前端程序猿的博客 4099

pcmwav、mp3

【代码】pcmwav、mp3

like_a_diamond的博客 1600

iOS PCM文件MP3格式

iOSPCMMP3格式,使用lame进行采样完成

周星星_的博客 4257

录音(PCM格式)、播放、lame码成MP3

引入下面两个lame是个第三方。 #import #import "lame.framework/Headers/lame.h" #pragma mark - 音频码 /**  *  音频码,由PCM码为MP3  */ - (void)convertToMP3 {     NSString * mp3FileName = @"send

pilgrim1385的专栏 4070

Android使用lamePCM文件码为MP3文件

Android使用lamePCM文件码为MP3文件

ice_bear221的博客 2788

lame mp3 wav文件mp3 单通道

int read, write; FILE *pcm = fopen("/Users/liuchan_xin/Desktop/音视频播放与保存例子/ipcamera.wav", "rb"); FILE *mp3 = fopen("/Users/liuchan_xin/Desktop/file.mp3", "wb"); int PCM_SIZE = 640; int MP3_SIZE = 8192

依然风 | ios 7632

Android音频处理实战:使用LAMEPCM编码为MP3的完整指南

基于火山引擎豆包大模型,从零搭建一个实时语音通话应用。它不是简单的问答,而是需要你亲手打通 ASR(语音识别)→ LLM(大脑思考)→ TTS(语音合成)的完整 WebSocket 链路。对于想要掌握 AI 原生应用架构的同学来说,这是个绝佳的练手项目。架构理解:掌握实时语音应用的完整技术链路(ASR→LLM→TTS)技能提升:学会申请、配置与调用火山引擎AI服务定制能力:通过代码修改自定义角色性格与音色,实现“从使用到创造”从0到1构建生产级别应用,脱离Demo,点击打开。

2600_94960137的博客 458

Android实时将PCMMP3并播放音频

​​​​​​Android实时将PCMMP3并播放音频 AudioCapturePlay 基于AudioRecord录制原始pcm音频,使用开源lame实时转换pcm音频MP3格式音频,采用Service、MediaPlayer播放MP3,提供录制音频计时器显示,音频音量分贝值显示,音频频谱显示,录制、播放状态控制等 功能简介 目前包含基本的音频录制、播放操作,功能如下: 基于A...

weixin_45365889的博客 2158

iOS开发通过lame将语音文件MP3格式

实现音频互通的方式,MP3格式是最合适的。这主要用到了lame,很棒的一个MP3音频编码器,在转换之前,需要利用AVAudioRecorder进行录音,同时进行如下参数设置: NSString *recordTemporaryPathString = [NSString stringWithFormat:@"%@/temporary",self.audioTemporarySavePat

LucioSui的博客 4629

Android LAME原生音频

我想大家都做过录音的功能吧,首先想到的是不是MediaRecorder?今天我们不用MediaRecorder,而是使用LAME自己编译音频编码模块,很明显,这个需要用到NDK。凡是涉及到音视频编解码这块的,都需要用到Android NDK(Native Development Kit),原生开发工具包。即使用C/C++代码实现音频的采样和编码,然后使用Java去调用原生模块实现录音功能。

跟着哆啦学Android 2190

Android音频处理实战:使用LAME高效压缩PCMMP3

基于火山引擎豆包大模型,从零搭建一个实时语音通话应用。它不是简单的问答,而是需要你亲手打通 ASR(语音识别)→ LLM(大脑思考)→ TTS(语音合成)的完整 WebSocket 链路。对于想要掌握 AI 原生应用架构的同学来说,这是个绝佳的练手项目。架构理解:掌握实时语音应用的完整技术链路(ASR→LLM→TTS)技能提升:学会申请、配置与调用火山引擎AI服务定制能力:通过代码修改自定义角色性格与音色,实现“从使用到创造”从0到1构建生产级别应用,脱离Demo,点击打开。

2600_94960193的博客 398

android lame音频转换,音视频开发02--使用LAME转换pcm文件到mp3

android 使用 AudioRecord 对麦克风进行录音得到的是 pcm 格式的原始音频数据,pcm文件是不能用来播放的,需要进行编码压缩。LAME是目前非常优秀的一种MP3编码引擎,在业界,码成MP3格式的音频文件时,最常用的编码器就是LAME。当达到320Kbit/s以上时,LAME编码出来的音频质量几乎可以和CD的音质相媲美,并且还能保证整个音频文件的体积非常小,因此若要在移动端平...

weixin_42553471的博客 802
上一篇: 从视频文件提取音频并存储为MP3格式文件
下一篇: MP3头部结构体定义(一)
科学帝威
博客等级 码龄11年 44粉丝 48原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值