[iOS-GQiang]转换音频文件mp3
来源:互联网 发布:2017年1月外贸数据 编辑:程序博客网 时间:2024/05/01 01:37
使用AVAudioRecorder录制下来的音频文件很大,所以下面我们用lame框架来将录制下来的音频文件转换成mp3格式的文件并缩小。
将几Mb的文件压缩成几kb的文件,这样就能方便开发者们使用了。
lame框架到Github上下载即可。
#pragma mark - 转换mp3- (void)audio_PCMtoMP3{ NSString *cafFilePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/downloadFile.caf"]; NSString *mp3FilePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/downloadFile.mp3"]; @try { int read, write; FILE *pcm = fopen([cafFilePath cStringUsingEncoding:1], "rb"); //source 被转换的音频文件位置 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_in_samplerate(lame, 11025.0); lame_set_VBR(lame, vbr_default); 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); } @catch (NSException *exception) { NSLog(@"%@",[exception description]); } @finally {
}}
这样就可以把录制的音频文件压缩成mp3格式的文件了。
0 0
- [iOS-GQiang]转换音频文件mp3
- wav格式音频文件转换为Mp3格式
- MP3音频文件转换成caf格式
- java实现silk音频文件转换成mp3
- iOS关于MP3音频文件合并和MOV音频文件合并
- [iOS-GQiang]AsyncSocket
- [iOS-GQiang]拨打电话
- [iOS-GQiang]创建线程
- [iOS-GQiang]NSMutabArray 排序
- [iOS-GQiang]时间戳
- Android开发 使用Lame把音频文件转换成mp3格式
- Android开发 使用Lame把音频文件转换成mp3格式
- 如何通过ffmpeg将音频文件转换成Mp3 转
- java 将.amr音频文件转换为.mp3或.wav文件
- 在服务器端,转换amr格式音频文件为MP3格式
- iOS利用AudioQueue播放音频文件(mp3,aac,caf,wav等)
- IOS caf音频文件如何转化成mp3文件
- [iOS-GQiang]iOS md5加密
- "高可用方案工具包" high availability toolkit 1.2 发布了。version 1.2 新增了 负载均衡 load balance 的技术实现
- 使用CURL来发送HTTP请求的方法
- Lua学习之6:面向对象编程
- Unity 倒计时简单实现
- C# 动态执行批处理命令
- [iOS-GQiang]转换音频文件mp3
- 虚函数和抽象函数的区别
- BFS简单实现
- fastjson 过滤掉不需要序列化的属性
- 第四章【字符串和多维数组】 思维导图
- Android新版NDK环境配置(免Cygwin)
- 静态局部变量
- openwrt rt5350 配置笔记
- 使用StatisticalOutlierRemoval滤波器移除离群点