Mikrofon Ses verilerini Multipeer Connectivity (iOS 8) üzerinden göndermek ve alıcı eşin hoparlörüyle çalmak istiyorum. Ayrıca AVAudioEngine'i kurdum ve mikrofon verilerini (üst) hoparlör çıkışından duyabiliyorum, ancak AVAudioPCMBuffer'ı ağ üzerinden nasıl göndereceğimi bilmiyorum. İşte kod kodum:iOS8 AVAudioMyveler Bağlantısı üzerinden mikrofon verileri nasıl gönderilir?
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]);
}
Bunu NSData veya NSStream olarak gönderir miyim?
Yardım için teşekkür ederiz. Teşekkürler.
- (NSOutputStream *)startStreamWithName:(NSString *)streamName
toPeer:(MCPeerID *)peerID
error:(NSError **)error
Sen property buffer.floatChannelData
kullanarak bir şamandıra dizi alabilir:
Merhaba Michael, thx. MCSessionDelegate bu yönteme sahiptir: session: didReceiveStream: withName: fromPeer: Veriyi akım olarak göndermek mümkün mü? sürekli veri akışı olduğundan. Ve, 'zaman aralığı yeterince geniş' anlamına gelir? Teşekkürler. –
Sadece göndereni sorduğunuzu sanıyordum. Alıcıyı ekledim. İkinci soru için aşırı basitleştiriyorum: ses verisi alıcının Bluetooth bağlantısından daha hızlı gelmesine neden oluyorsa; Bu 'zaman dilimi' ile kastediyorum. –
Merhaba Michael, hızlı cevap için teşekkürler. Pardon me ... StartStreamWithName: toPeer: error :,ReceiveStream alma kısmı demek istedim. NSData kullanarak gönderme ve alma denedim, ancak alıcı tarafında bir sorunum var. [NSData dataWithBytes: buffer.floatChannelData length: buffer.frameLength] kullanarak gönderdim, alınan bayt verilerini AVAudioPCMBuffer'a nasıl dönüştürebilirim? Tamponu oynatmak için AVAudioPlayerNode kullanacağımdan beri. Apple belgelerinde buffer.floatChannelData için 'setter' yok. –