Я использую этот учебник Аудиопоток для многопользовательского подключения к Несколько одноранговых узлов и этот проект Github Repository для потоковой передачи звука из NSInputStream, который получается от:
-(void)session:didReceiveStream:withName:fromPeer:
Метод делегата MCSession.
После этого откроется новый поток аудиофайлов (TDAudioFileStreamer / Classes / AudioFileStream.m: 39):
OSStatus err = AudioFileStreamOpen((__bridge void *)self, TDAudioFileStreamPropertyListener, TDAudioFileStreamPacketsListener, 0, &_audioFileStreamID);
Затем прочтите байты из NSInputStream и попробуйте выполнить синтаксический анализ таким образом (TDAudioFileStreamer / Classes / AudioFileStream.m: 98):
err = AudioFileStreamParseBytes(self.audioFileStreamID, length, data, kAudioFileStreamParseFlag_Discontinuity);
Or:
err = AudioFileStreamParseBytes(self.audioFileStreamID, length, data, 0);
В зависимости от потока данных.
И, наконец, заполняется буфер AudioQueue проанализированными данными для воспроизведения (я думаю - TDAudioFileStreamer / Classes / TDAudioQueueFiller.m).
Это действительно хорошо работает для файлов формата MP3, но с другими форматами при попытке синтаксического анализа байтов возникает ошибка «неподдерживаемый формат файла».
В документации Apple говорится, что службы Audio File Stream поддерживают множество форматов, и они перечислены по этой ссылке: Apple Stream Services поддерживает форматы, но для меня работает только с MP3.
Я тоже пытался, когда открываю поток аудиофайлов, передаю подсказку о таком формате файла и отправляю файл M4A или AAC:
OSStatus err = AudioFileStreamOpen((__bridge void *)self, TDAudioFileStreamPropertyListener, TDAudioFileStreamPacketsListener, kAudioFileAAC_ADTSType, &_audioFileStreamID);
Где kAudioFileAAC_ADTSType - это тип отправленного файла, который будет транслироваться, таким образом, «ошибка неподдерживаемого формата файла» исчезнет, но приложение выйдет из строя и получит новую ошибку
Это говорит: io: lpc и client: aac.
- Кто-нибудь знает, что это значит?
- Очередь ожидает файл формата AAC?
- Почему LPCM (линейная импульсно-кодовая модуляция), я отправляю M4A или AAC, а не LPCM?
Заранее спасибо.