amr压缩 ios
2013-05-07 11:15:06 yuanya 阅读数 1298
很多作多平台语音ios开发的人肯定都会遇到一个很大的麻烦,就是ios录制的基本音频格式为caf,那么很多平台都不支持caf啊。。。上一篇文章写的是打算用音频队列的录制方法,和播放方法去作兼容的。不过意外中发现了amr和wav的互相转换的方法。

大家应该都知道一个事情,就是ios4.2以下系统的设备可以播放amr,但是ios4.2以后就不能播放amr了。这样下来的话,我们就可以用amr来作网络的交互文件了。

那么,下面的问题就是录制wav文件了,下载了一个官方的speakHere的demo,发现里面只要改掉一个设置项就能成功的录制成wav的文件了。

目前,经过测试已经基本能录制wav文件并转换成amr文件。而且可以把amr文件转成wav文件并播放了。给大家推荐两个demo,一个就是官方的speakHere,另外一个是网上的一位大神分享的amrDemoForiOS。

注:记得要把参数改对哦
ps:测试的时候改参数改了一下午呢。最郁闷的是中间一个参数改失败了,转码成功了,但是却。。。把我的“喂喂”,的低频段去掉了,变成了“汪汪”。。。
2013-03-17 22:14:16 tw365524764 阅读数 1157

项目需求,需要在iOS和android上实现语音互通功能。

资料搜集与参考

  1. 类似产品使用的技术

    • talkbox Android版用的是ilbc的第三方编解码库,在iPhone上用的是caf
    • 微信   Android版估计是amr估计转码的是交给腾讯强大的服务器了。
    • 米聊   Android版和Iphone版用的都是speex

    目前支持的开源第三方库也就只有 ilbc和speex了

  2. 考虑采用的方案

    speex需要Android和ios都进入转码,工作量太大,不采用。剩下的方案就是在amr和ilbc上选择了,android支持amr,低版本不支持ilbc, ios高版本(4.3)只支持ilbc,不能支持amr。刚开始的测试方案使用的是android将语音转ilbc, 由于我对于android开发不是太熟悉,在同事的帮助下一直没有转换成功,现在想想可能是处理问题,如果能转换成或,这种方案应该是最方便的。

ios实现amr编解码

录制

  1. 将语音录成原始pcm码

    注意这里,虽然录制是pcm码,但出来的文件ios依然会封装一层,将其包装成pcf格式。所以就有了第二步。

  2. 将pcf中的pcm码取出来

  3. 使用libopencore库将其编成amr格式,这时可以发送给android端播放了。

播放

  1. 将android版本发送过来的amr解码出来

  2. 播放原始pcm即可

代码文件都放在github上了,有需要的可以参考一下。 https://github.com/hhuai/ios_util

2012-10-30 11:13:50 macleo 阅读数 33
[url]http://hhuai.github.com/blog/2012/02/05/ios-and-andorid-voice/[/url]

避免链接失效,拷贝一份:
--------------------------------------------------------------
Ios实现amr编解码
Feb 5th, 2012
介绍
学习ios第一个练手功能就是给已有产品加上语音通信功能,能够互通ios与android。这里给出自己的一些心得,希望能给他人一些参考。
资料搜集与参考
类似产品使用的技术
talkbox Android版用的是ilbc的第三方编解码库,在iPhone上用的是caf
微信   Android版估计是amr估计转码的是交给腾讯强大的服务器了。
米聊   Android版和Iphone版用的都是speex
目前支持的开源第三方库也就只有 ilbc和speex了
考虑采用的方案
speex需要Android和ios都进入转码,工作量太大,不采用。剩下的方案就是在amr和ilbc上选择了,android支持amr,低版本不支持ilbc, ios高版本(4.3)只支持ilbc,不能支持amr。刚开始的测试方案使用的是android将语音转ilbc, 由于我对于android开发不是太熟悉,在同事的帮助下一直没有转换成功,现在想想可能是处理问题,如果能转换成或,这种方案应该是最方便的。
ios实现amr编解码
录制
将语音录成原始pcm码
注意这里,虽然录制是pcm码,但出来的文件ios依然会封装一层,将其包装成pcf格式。所以就有了第二步。
将pcf中的pcm码取出来
使用libopencore库将其编成amr格式,这时可以发送给android端播放了。
播放
将android版本发送过来的amr解码出来
播放原始pcm即可
代码文件都放在github上了,有需要的可以参考一下。 https://github.com/hhuai/ios_util
2016-06-21 09:54:45 Liu_Esther 阅读数 5137
iOS 录音转码:amr到wav,wav到am:

这里就把iOS录制的wav文件转成amr,我们采用的是libopencore框架。

关于libopencore,大家可以搜索:iOS音频格式AMR和WAV互转(支持64位)

在他的AmrWavConverter代码Demo里面有掩饰这两个转码工作。



//转换amr到wav
+ (int)ConvertAmrToWav:(NSString *)aAmrPath wavSavePath:(NSString *)aSavePath{
     
    if (! DecodeAMRFileToWAVEFile([aAmrPath cStringUsingEncoding:NSASCIIStringEncoding], [aSavePath cStringUsingEncoding:NSASCIIStringEncoding]))
        return 0;
     
    return 1;
}
//转换wav到amr
+ (int)ConvertWavToAmr:(NSString *)aWavPath amrSavePath:(NSString *)aSavePath{
     
    if (! EncodeWAVEFileToAMRFile([aWavPath cStringUsingEncoding:NSASCIIStringEncoding], [aSavePath cStringUsingEncoding:NSASCIIStringEncoding], 1, 16))
        return 0;
     
    return 1;
}
2016-07-14 10:47:29 qq_30013245 阅读数 334

1、在 https://github.com/search?utf8=%E2%9C%93&q=AMRVoiceRecorder 这个链接下载 库文件


2、直接将下载的文件 拖入工程


3、需要添加 AVFoundation.framework 框架



4、直接调用方法 


其中 wavStr 是 你录制的wav语音的路径  amrStr是你把wav转成amr的路径 wavBackStr是你把amr又转回wav的路径

之所以写3个路径 是因为 *************wavStr 是自己录制的   wavBackStr是假如Android给iOS发的一个amr的语音,iOS把amr语音转换成wav的语音 就能播放了  最后在真机得到3个文件 (3个文件都是我随便写的前缀名)



其中  record.wav是 自己录制的  aaaaaa.amr 是 record.wav转的 oooooo.wav是 aaaaaa.amr 回转的 


//github 有demo  希望大家多提意见 给点星星 

https://github.com/tengqingyang521/record_amrTowav



没有更多推荐了,返回首页