Я хочу отправить аудиоданные микрофона через Multipleer Connectivity (iOS 8) и воспроизвести его через динамик принимающего партнера. Я также настраиваю AVAudioEngine, и я могу слышать данные микрофона с выхода (верхнего) динамика, но я не знаю, как отправить AVAudioPCMBuffer по сети. Вот мой фрагмент кода:iOS8 AVAudioEngine Как отправить данные микрофона через Multipeer Connectivity?
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?
Цените помощь. Спасибо.
Привет Майкл, ТНХ Fo ответ. MCSessionDelegate имеет этот метод: session: didReceiveStream: withName: fromPeer: возможно ли отправлять данные как поток? поскольку это непрерывный поток данных. И что означает «временной интервал»? Спасибо. –
Я думал, что вы спрашиваете только об отправителе. Я добавил ресивер. Для второго вопроса я упрощаю: если аудиоданные поступают быстрее на приемник, чем может работать соединение Bluetooth; это я имел в виду под «временным интервалом». –
Привет, Майкл, спасибо за быстрый ответ. Простите меня ... Я имел в виду startStreamWithName: toPeer: error :, didReceiveStream - получающая часть. Я пробовал отправлять и получать с использованием NSData, но у меня проблема на принимающей стороне. Я посылаю с использованием [NSData dataWithBytes: buffer.floatChannelData length: buffer.frameLength], как мне преобразовать полученные данные байтов в AVAudioPCMBuffer? Поскольку я буду использовать AVAudioPlayerNode для воспроизведения буфера. В документах Apple нет «setter» для buffer.floatChannelData. –