(综合)iPhone手机录音-amr
来源:互联网 发布:win8 java 编辑:程序博客网 时间:2024/05/01 17:50
主要使用AudioTrack和AudioRecord两个类进行操作
可参考webrtc源码:\ver789\src\modules\audio_device\main\source\android\org\webrtc\voiceengine\AudioDeviceAndroid.java
参考百度资料
http://wenku.baidu.com/view/da8fc2fb0242a8956bece4a0.html
转: ios与android语音互通方案,类微信
AudioRecord和AudioTrack类的使用(音频录制与播放)
什么是音频的采样率和采样大小
android中AudioRecord采集音频的参数说明
会说话的TOM猫的原理是什么
很多网友对会说话的TOM猫的原理比较感兴趣,这里Android123就实现做一个简单的分析:
1. 音频采集
这点主要是通过Android设备的麦克风实时采集音频,由于Android平台的MediaRecorder类录制音频到文件,虽然可以通过空设备回调获得实时的音频流,不过为了降低开发者的难度,Android开发网推荐使用正统的AudioRecord和AudioTrack,首先我们仍然需要加入android.permission.RECORD_AUDIO这个权限。
android.media.AudioRecord类的read方法主要有3种重载形式:
int read(short[] audioData, int offsetInShorts, int sizeInShorts) //short在java中占用两个字节
int read(byte[] audioData, int offsetInBytes, int sizeInBytes) //byte在java中占用一个字节
int read(ByteBuffer audioBuffer, int sizeInBytes) //基于NIO的ByteBuffer类型
我们可以看到从麦克风中获取的音频无需经过文件系统直接通过AudioRecord类的read方法读入到我们预定的缓冲区中,这里需要注意的是采样率的大小必须有足够的缓冲区空间处理、
2. 变声处理
这点需要一些基本的音频处理方式,比如移调、变速,Android开发网推荐大家参考Adobe Audition的早期Cool Editi泄露的代码,当然音频处理算法比较多,大家可以自己实现。
3. 播放原始音频流
同样,处理完后考虑到效率我们仍然直接从内存流中播放,最简单的就是AudioTrack类,通过android.media.AudioTrack类的write方法,让Android声卡播放原始音频流。两种重载方法如下
int write(short[] audioData, int offsetInShorts, int sizeInShorts)
int write(byte[] audioData, int offsetInBytes, int sizeInBytes)
Android本身的MediaRecorder肯定是不行的,只支持amr,wav,acc,如果要做到Android,Iphone,pc通用的话,这些格式是行不通的只能找第三方编解码库
talkbox Android版用的是ilbc的第三方编解码库,在iPhone上用的是caf
微信 Android版估计是amr估计转码的是交给腾讯强大的服务器了。
米聊 Android版和Iphone版用的都是speex
搜了下,目前支持的开源第三方库也就只有 ilbc和speex了
http://www.speex.org/downloads/ speex的官网
http://www.badlogicgames.com/wordpress/?p=1726&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+PlanetAndroidCom+%28Planet+Android%29 在Android上编译的方法
http://bbs.rosoo.net/thread-5956-1-1.html speex音频编解码的示例
http://code.google.com/p/android-recorder/ 源码,不过它又转了一次码,弄成flv了。
----------------------------------
避免链接失效,拷贝一份:
--------------------------------------------------------------
Ios实现amr编解码
介绍
学习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
- (综合)iPhone手机录音-amr
- iphone 录音存amr
- Android录音、WAV、AMR
- Android下录音amr文件
- iphone 播放amr
- iOS录音转码:amr转wav,wav转amr
- Android AMR格式录音和播放,仿微信
- IPhone之AVAudioRecorder 录音
- 监听手机录音
- angularjs+ngCordova 手机录音
- iOS 录音Wav 音频 转换 Amr ,Android 播放
- iOS 录音Wav 音频 转换 Amr ,Android 播放
- iOS 录音Wav 音频 转换 Amr ,Android 播放
- java 将微信录音amr转换为mp3格式
- Android录音并播放(mp3或amr格式)
- 微信录音amr音频文件转mp3格式
- android 录音amr转mp3支持浏览器浏览
- 微信录音amr音频文件转mp3格式
- ubuntu忘记密码解决方法
- 寒假软设--小型数据库进展(2)----'dir/b/ad/s f:\ 中几个参数讲解
- eclipse修改tomcat内存
- AndroidManifest解析
- Webbrowser获取页面中所有frame
- (综合)iPhone手机录音-amr
- Oracle Flashback 闪回查询功能
- WebBrowser调用网页中已知对象
- Java Web 项目中的配置文件路径
- Mysql的数据库文件说明
- WebBrowser执行网页中的函数
- Linux下C++的通用Makefile与解析
- WebBrowser获得网页中变量值
- I2C设备驱动的编写(一)