中间参考了别人的Demo,下载地址不记得了。
因为项目需要做一个语音对讲功能,其实说白了就是类似QQ的语音通话,但是资料少之又少,研究了好久,才跟同事弄出一个粗略的版本。我记性不好,所以来记录一下,也希望能够帮助其他人。
本来以为是要做语音对讲,类似微信的发送语音,我觉得这个还挺简单的,就是发送一个语音的文件,所以一开始用的是AVAudioPlayer,因为这个东西只能播放本地音频,而且非常简单。可是都快做好了,头头才说明白要的是语音通话。(小公司,别说文档了,连接口文档都没有)
后来找到AudioQueue,找了好多demo和资料,都没有直接播放从服务器端接收到的数据的例子,后来没办法,只能自己想办法咯。不过大致过程是一致的。
首先肯定是设置创建录音的音频队列,以及缓冲区,还有播放的队列和播放缓冲区,因为我们是要一起打开,所以一起创建,开始录音,并播放声音。
后面会上传demo,开始对讲的方法如下:
//开始对讲
- (IBAction)startIntercom:(id)sender {
//让udpSocket 开始接收数据
[self.udpSocket beginReceiving:nil];
//先把接收数组清空
if (receiveData) {
receiveData = nil;
}
receiveData = [[NSMutableArray alloc] init];
if (_recordAmrCode == nil) {
_recordAmrCode = [[RecordAmrCode alloc] init];
}
//设置录音的参数
[self setupAudioFormat:kAudioFormatLinearPCM SampleRate:kDefaultSampleRate];
_audioFormat.mSampleRate = kDefaultSampleRate;
//创建一个录制音频队列
AudioQueueNewInput (&(_audioFormat),GenericInputCallback,(__bri