ios silk to MP3
语音格式转换
第一次写博客,记录下新出的问题。
最近做了个新东西,语音格式的转换。从微信获取发送的语音文件,然后转换成MP3上传到服务器。
各种国内国外网站找了好多,大概转换流程就是:slk->pcm->mp3。
网上拿了大佬的silk文件以及lame文件,自己保存一下,发个demo。
// silk转成pcm
NSString *silkFilePath = msg.m_nsFilePath;char OpenFile[256];memcpy(OpenFile, [silkFilePath cStringUsingEncoding:NSASCIIStringEncoding], 2 * [silkFilePath length]);NSString *pcmFilePath = [silkFilePath stringByReplacingOccurrencesOfString:@"slk" withString:@"pcm"];char filepath[256];memcpy(filepath, [pcmFilePath cStringUsingEncoding:NSASCIIStringEncoding], 2 * [pcmFilePath length]);int ret = SILK_Decoder(OpenFile, filepath);if (ret == 1){pcmFile = fopen(filepath, "r");if (pcmFile){fseek(pcmFile, 0, SEEK_SET);DebugLog(@"PlayerViewController PCM文件打开成功...");// 将pcm格式文件转成MP3格式[NSThread detachNewThreadWithBlock:^{// 删除本地的silk文件
// [LLSaveImageManager deleteLocalAudioWithPath:silkFilePath];// 将pcm格式文件转成MP3格式[self pcmToMp3:pcmFilePath msg:msg];[NSThread exit];}];}else{DebugLog(@"PlayerViewController PCM文件打开错误...");return;}}// pcm格式文件转成MP3
NSString *mp3FilePath = [pcmFilePath stringByReplacingOccurrencesOfString:@"pcm" withString:@"mp3"];@try {int read, write;FILE *pcm = fopen([pcmFilePath cStringUsingEncoding:1], "rb");fseek(pcm, 4*1024, SEEK_CUR);FILE *mp3 = fopen([mp3FilePath cStringUsingEncoding:1], "wb");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); // 微信语音单通道lame_set_in_samplerate(lame, 11025.0); // 输入采样率lame_set_brate(lame, 88);lame_set_quality(lame, 2);lame_set_VBR(lame, vbr_default);lame_init_params(lame);do {read = (int)fread(pcm_buffer, 2 * sizeof(short int), PCM_SIZE, pcm);if (read == 0) {// lame_encode_flush 单声道以及双声道使用write = lame_encode_flush(lame, mp3_buffer, MP3_SIZE);} else {// lame_encode_buffer_interleaved 双声道数据是交错在一起输入的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) {DebugLog(@"exception = %@", [exception description]);}@finally {[HSState sharedInstance].audio_duration = [self getLength:mp3FilePath];NSURLSession *session = [NSURLSession sharedSession];NSURLSessionDataTask *task = [session dataTaskWithURL:[NSURL fileURLWithPath:mp3FilePath] completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {if (!error) {// 转换成功...}}];[task resume];}
ios silk to MP3相关推荐
- 【PC工具】更新微信语音转mp3保存备份方法及工具,微信语音备份方法,silk转mp3工具...
微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 210605更新蓝奏云下载连接. 不知道蓝奏云抽啥风,感觉像是域名到期被别人给抢注了. ...
- 【PC工具】微信语音转mp3保存备份方法及工具,微信语音备份方法,silk转mp3工具...
微信是大家常用的通信工具,有些聊天记录的语音是我们想要长期保存或转发给其他人的.今天介绍一下微信语音的备份保存方法. 收藏的方法方法很简单,长按语音点击收藏就可以了,以后想听可以在"我&qu ...
- php slik转wav_node.js安装wx-voice转换silk和mp3
<node.js安装wx-voice转换silk和mp3>要点: 本文介绍了node.js安装wx-voice转换silk和mp3,希望对您有用.如果有疑问,可以联系我们. 一.安装min ...
- lame,把ios录音转换为mp3格式
在ios设备中进行录音,录音文件的格式为caf.但这种格式在很多设备中没法播放.为了适应终端的播放功能,特将caf转换为mp3格式文件来使用. 在录制caf文件时,需要使用双通道,否则在转换为MP3格 ...
- centos7 silk转mp3 wav
参考 https://github.com/kn007/silk-v3-decoder https://blog.csdn.net/lbaihao/article/details/53143524 h ...
- java silk转mp3,小程序录音后格式转换问题请教
23 回复 我也大概知道是这玩意,但是java代码不太会搞.... 大叔啊,有没有直接的java代码啊,我自己写了但是出了好多问题,不知道如何是好啊....冒昧问下nutz提供转码工具类么...如果没 ...
- lunix上silk转mp3 和 mp3转silk
注:文中silk特指silk_v3格式 1.安装ffmpeg 1.1.安装lame wget https://jaist.dl.sourceforge.net/project/lame/lame/3. ...
- [小程序开发] silk 转 MP3 ,第三步
来个狠的: 一直有个帮群里语音学习接龙的想法. 开始了小程序学习后,直接开干. 1:php 上传文件,这个简单,silk文件上传倒是没有拦路虎.(具体可以百度一下,一堆堆的教程) 2:silk 文件上 ...
- 微信小程序语音识别开发过程记录 微信小程序silk转mp3 silk转wav 以及ffmpeg使用 微信小程序语音红包...
说说最近在开发微信小程序语音识别遇到的问题吧 最先使用微信小程序录音控件可以拿到silk格式,后来微信官方又支持mp3格式了 但是我们拿到这些格式以后,都还不能直接使用,做语音识别,因为目前百度的语音 ...
最新文章
- 解读刘强东关于人才的两个标准和5个层次
- 实时获取ccd图像_薄膜瑕疵在线检测系统0.1mm检测精度_实时在线检测
- YUM部署高版本LNMP环境
- (有图片)汇编工具dosbox下自动mount及切换虚拟目录使用步骤。
- Python将数据插入到数据库时遇到单引号插入错误的问题
- 工作153:position使用
- MacOS Docker版本FastDFS安装指南
- oracle 主键_mysql 组合索引带主键ID的问题
- linux查看native进程,Android 分析应用程序占用native内存
- HDOJ 2050 折线分割平面
- 网易邮箱的web服务器使用的是apache
- Codeforces Gym 100187E E. Two Labyrinths bfs
- Http协议简易分析
- (转)敲黑板:IT项目出现问题,足以拖垮整个公司
- 民生银行用户画像搭建与应用 / 民生银行客户画像搭建与应用
- python直方图解释_python直方图1 lin
- 神经影像研究驱动的脑龄估计作为脑疾病和健康状况识别的生物学标记
- bert做文本摘要_BERT文本摘要
- ms sql 创建表_使用MS查询创建表组合
- 电脑格式化之后如何进行数据恢复【图文教程】