在ios设备中进行录音,录音文件的格式为caf。但这种格式在很多设备中没法播放。为了适应终端的播放功能,特将caf转换为mp3格式文件来使用。

在录制caf文件时,需要使用双通道,否则在转换为MP3格式时,声音不对。caf录制端的设置为:

NSMutableDictionary * recordSetting = [NSMutableDictionary dictionary];

[recordSetting setValue :[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey];//

[recordSetting setValue:[NSNumber numberWithFloat:8000.0] forKey:AVSampleRateKey];//采样率

[recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];//声音通道,这里必须为双通道

[recordSetting setValue:[NSNumber numberWithInt:AVAudioQualityLow] forKey:AVEncoderAudioQualityKey];//音频质量

在转换mp3端的代码为:

NSString *cafFilePath = cafFilePathName;    //caf文件路径

NSString *mp3FilePath = mp3FilePathName;//存储mp3文件的路径

NSFileManager* fileManager=[NSFileManager defaultManager];

if([fileManager removeItemAtPath:mp3FilePath error:nil])

{

NSLog(@"删除");

}

@try {

int read, write;

FILE *pcm = fopen([cafFilePath cStringUsingEncoding:1], "rb");  //source 被转换的音频文件位置

if(pcm == NULL)

{

NSLog(@"file not found");

}

else

{

fseek(pcm, 4*1024, SEEK_CUR);                                   //skip file header

FILE *mp3 = fopen([mp3FilePath cStringUsingEncoding:1], "wb");  //output 输出生成的Mp3文件位置

const int PCM_SIZE = 8192;

const int MP3_SIZE = 8192;

short int pcm_buffer[PCM_SIZE*2];

unsigned char mp3_buffer[MP3_SIZE];

lame_t lame = lame_init();

lame_set_num_channels(lame,1);//设置1为单通道,默认为2双通道

lame_set_in_samplerate(lame, 8000.0);//11025.0

//lame_set_VBR(lame, vbr_default);

lame_set_brate(lame,8);

lame_set_mode(lame,3);

lame_set_quality(lame,2); /* 2=high 5 = medium 7=low 音质*/

lame_init_params(lame);

do {

read = fread(pcm_buffer, 2*sizeof(short int), PCM_SIZE, pcm);

if (read == 0)

write = lame_encode_flush(lame, mp3_buffer, MP3_SIZE);

else

write = lame_encode_buffer_interleaved(lame, pcm_buffer, read, mp3_buffer, MP3_SIZE);

fwrite(mp3_buffer, write, 1, mp3);

} while (read != 0);

lame_close(lame);

fclose(mp3);

fclose(pcm);

return YES;

}

return NO;

}

@catch (NSException *exception) {

NSLog(@"%@",[exception description]);

return NO;

}

@finally {

NSLog(@"执行完成");

}

转载于:https://www.cnblogs.com/ios8/p/lame-ios-mp3.html

lame,把ios录音转换为mp3格式相关推荐

  1. iOS 录音转MP3格式

    参考:https://github.com/molon/MLAudioRecorder 非常感谢 可以借助demo进行学习,demo地址:  https://github.com/qiweiqiang ...

  2. 如何将录音m4a转换为mp3格式?

    如何将录音m4a转换为mp3格式?前段时间由于工作原因,需要上传录音文件到一个网站上,可是这个录音文件怎么也上传不上去,查看原因后才发现原来网站只支持mp4的音频文件,而我是用苹果手机录音的,录音文件 ...

  3. 电脑录制的音频文件如何转换为MP3格式

    很多人认为,电脑录制的文件是不能转换格式,其实并不是这样的,电脑录制的音频文件转换为MP3格式大家是可以借助工具完成,如今市面上出现了很多的音频转换工具,它可以把音频的格式进行不同的变化但是大家却不知 ...

  4. PHP 将amr音频文件转换为mp3格式

    PHP 将amr音频文件转换为mp3格式 说下整体思路 1.服务器安装ffmpeg 2.使用ffmpeg -i 指令来转换amr为mp3格式(这个到时候写在PHP代码中,使用exec函数执行即可) 3 ...

  5. ogg格式文件转换为MP3格式

    目录 下载编译libmp3lame 配置编译ffmpeg 验证libmp3lame 下载编译libmp3lame 在ubuntu下使用ffmpeg时出现了如下Unknown encoder 'libm ...

  6. ubuntu下把微信的amr音频格式转换为 mp3格式

    做一个微信微拍的系统,从微信的音频中读取回来的格式是amr,但是在苹果系统中不能正常的播放,需要转换为mp3格式 在终端运行如下命令 1.sudo apt-get install lame 2.sud ...

  7. 在线qmc0转换mp3工具_如何将M4A格式的音频转换为MP3格式?只需一步搞定

    随着网络技术的发达,会有很多人喜欢在网上下载东西,特别是很喜欢在网上下载音乐,但是下载音乐之后发现是M4A格式?这样用起来很不方便,都喜欢MP3格式的,那么如何将M4A格式的音频转换为MP3格式?今天 ...

  8. linux java amr转mp3_本工具用于将微信语音 amr 格式转换为 mp3 格式以便在 html5 的 audio 标签中进行播放...

    音频转码工具 本工具主要用于将微信语音 amr 格式转换为 mp3 格式以便在 html5 的 audio 标签中进行播放. 支持 Linux/Windows/Mac 平台 因为是基于 JAVE 项目 ...

  9. amr转换成mp3 java_java将amr文件转换为MP3格式(windowslinux均可使用,亲测)

    使用场景: 业务中需要使用微信语音接口,由于微信上传语音只保存3天,所以需要将语音文件下载到服务器. 但是amr格式文件,前端无法识别,需要将其转换为mp3格式. 装换方法如下: 1.需安装ffmpe ...

最新文章

  1. CSS中background-position属性
  2. 磁盘上没有足够的空间完成此操作_三年多啦,那么多IT人还没有搞定这个问题...
  3. ASP Win7旗舰版中的IIS配置asp.net的运行环境
  4. 如何批量创建网页的快捷方式
  5. nginx php动态编译加载模块.
  6. openrowset excel 科学计数_txt的数据导入excel中身份证或银行卡显示成科学计数如何解决...
  7. MagicRecord For IOS API深层解析
  8. firefox使用掘金插件_Mozilla发布新的附加组件来修复旧版Firefox中的扩展禁用问题...
  9. 一条SQL语句的千回百转
  10. 60-130-336-源码-source-kafka相关-Flink读取kafka
  11. Linux top命令里面%CPU和cpu(s)的差别
  12. Linux系统(X64)7 安装Oracle11g完整安装图文教程另附基本操作
  13. MLE MAP EM
  14. Cent OS (一)Cents OS的基本安装
  15. VO,DTO,PO 的个人见解
  16. 写给20几岁的女孩、男孩
  17. WebApi编程(一)-DOM
  18. vsimk is exiting with code 211
  19. 神经网络中BP算法的推导
  20. ShowWindow 隐藏、显示、最大化、最小化窗口

热门文章

  1. 先进制造技术论文_干货分享:新能源汽车先进制造技术
  2. 前端信息查询与显示_中国商标网查询显示的信息都是正确的吗
  3. python 画图设置横纵坐标_Python输出高质量论文图片
  4. html如何设置字符类型,html 空格字符类型
  5. 计算机控制系统开卷试卷,13自动化计算机控制技术考试A卷
  6. arduino无源蜂鸣器歌曲编码_Arduino与无源蜂鸣器
  7. 为什么不用DriverManager.registerDriver(driver)
  8. 电子商务之 网店客服中心服务用语规范
  9. struts、hibernate、spring、 mybatis、 spring boot 等面试题汇总
  10. 微信二次修改微信号_微信支持修改微信号了!功能正式上线,附详细教程