我想通过多点连接 (iOS 8) 发送麦克风音频数据,并通过接收方的扬声器播放它。我还设置了 AVAudioEngine,并且可以从(上方)扬声器输出听到麦克风数据,但我不知道如何通过网络发送 AVAudioPCMBuffer。这是我的代码片段:
AVAudioInputNode *inputNode =[self.engine inputNode];
AVAudioMixerNode *mainMixer = [self.engine mainMixerNode];
[self.engine connect:inputNode to:mainMixer format:[inputNode inputFormatForBus:0]];
[mainMixer installTapOnBus:0 bufferSize:4096 format:[mainMixer outputFormatForBus:0]
block:^(AVAudioPCMBuffer *buffer, AVAudioTime *when) {
//==== How to send the PCMBuffer ?? ======//
}];
NSError *error = nil;
[self.engine startAndReturnError:&error];
if(error)
{
NSLog(@"error: %@", [error localizedDescription]);
}
我是否将其作为 NSData 或 NSStream 发送?
感谢您的帮助。谢谢。
我没有尝试过这个解决方案:
- (NSOutputStream *)startStreamWithName:(NSString *)streamName
toPeer:(MCPeerID *)peerID
error:(NSError **)error
您可以使用以下命令接收浮点数组财产buffer.floatChannelData。现在您可以将此浮点数组打包到NSOutputStream
并发送它。
在客户端,您可以尝试接收流:
- (void)session:(MCSession *)session
didReceiveStream:(NSInputStream *)stream
withName:(NSString *)streamName
fromPeer:(MCPeerID *)peerID
{
stream.delegate = self;
[stream scheduleInRunLoop:[NSRunLoop mainRunLoop]
forMode:NSDefaultRunLoopMode];
[stream open];
}
但在尝试此操作之前,您可以尝试发送随机值(因此白噪声)而不是浮点数组,因此您可以确保发送这些缓冲区(我们正在谈论实时)的时隙足够宽。
更新 15.10.2014我找到了你所需要的:http://robots.thoughtbot.com/streaming-audio-to-multiple-listeners-via-ios-multipeer-connectivity
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)