Мне удалось отправить и получить NSData с одного iPhone на другой, используя Bonjour. Я написал обратные вызовы для записи звука с помощью аудио очереди и послал NSData используя следующую функцию обратного вызова на стороне отправителя:Как отправлять и получать Live-аудио с одного iPhone-микрофона на другой iPhone-динамик?
void AudioInputCallback(void * inUserData,
AudioQueueRef inAQ,
AudioQueueBufferRef inBuffer,
const AudioTimeStamp * inStartTime,
UInt32 inNumberPacketDescriptions,
const AudioStreamPacketDescription * inPacketDescs)
{
RecordState * recordState = (RecordState*)inUserData;
if (!recordState->recording)
{
printf("Not recording, returning\n");
}
// if (inNumberPacketDescriptions == 0 && recordState->dataFormat.mBytesPerPacket != 0)
// {
// inNumberPacketDescriptions = inBuffer->mAudioDataByteSize/recordState->dataFormat.mBytesPerPacket;
// }
printf("Writing buffer %lld\n", recordState->currentPacket);
OSStatus status = AudioFileWritePackets(recordState->audioFile,
false,
inBuffer->mAudioDataByteSize,
inPacketDescs,
recordState->currentPacket,
&inNumberPacketDescriptions,
inBuffer->mAudioData);
NSLog(@"DATA = %@",[NSData dataWithBytes:inBuffer->mAudioData length:inBuffer->mAudioDataByteSize]);
[[NSNotificationCenter defaultCenter] postNotificationName:@"Recording" object:[NSData dataWithBytes:inBuffer->mAudioData length:inBuffer->mAudioDataByteSize]];
if (status == 0)
{
recordState->currentPacket += inNumberPacketDescriptions;
}
AudioQueueEnqueueBuffer(recordState->queue, inBuffer, 0, NULL);
}
В приведенном выше коде я сумел отправить inBuffer-> mAudioData преобразуется в NSData и отправить его на другом iPhone. Я также получил те же данные на приемнике iPhone.
Но теперь я не знаю, как читать эти NSData. Как преобразовать эти данные в аудиоформат и прослушать этот звук на динамике. Нужно ли использовать звуковые очереди на стороне приемника или использовать простой AVPlayer для прослушивания звука. Если кто-то может помочь решить проблему, это будет большой помощью.
Я нахожусь на треке worng, есть ли другой способ достичь этого? – Geekoder
Вам удалось воспроизвести данные? Если да, напишите несколько советов. Я столкнулся с подобной проблемой. – moenad
Нет, я застрял здесь и не смог ничего сделать перед этим. – Geekoder