Falha ao analisar o arquivo M4A, AAC com o Apple Audio File Stream Services, iOS 7
Estou usando este tutorialConectividade de vários usuários Áudio Stream para vários pares e esse projetoRepositório do Github , para transmitir áudio do NSInputStream, obtido por:
-(void)session:didReceiveStream:withName:fromPeer:
Método de delegação do MCSession.
Depois disso, é aberto um novo fluxo de arquivos de áudio (TDAudioFileStreamer / Classes / AudioFileStream.m: 39):
OSStatus err = AudioFileStreamOpen((__bridge void *)self, TDAudioFileStreamPropertyListener, TDAudioFileStreamPacketsListener, 0, &_audioFileStreamID);
Em seguida, leia os bytes do NSInputStream e tente analisar dessa maneira (TDAudioFileStreamer / Classes / AudioFileStream.m: 98):
err = AudioFileStreamParseBytes(self.audioFileStreamID, length, data, kAudioFileStreamParseFlag_Discontinuity);
Ou:
err = AudioFileStreamParseBytes(self.audioFileStreamID, length, data, 0);
Dependendo do fluxo de dados.
E, finalmente, isso preenche o AudioQueue Buffer com os dados analisados para reproduzir (eu acho - TDAudioFileStreamer / Classes / TDAudioQueueFiller.m).
Isso funciona muito bem para arquivos no formato MP3, mas com outros formatos ao tentar analisar os bytes, obtém o erro "formato de arquivo não suportado".
A documentação da Apple diz que os serviços Audio File Stream suportam muitos formatos e estão listados neste link:Formatos suportados pelo Apple Stream Services, mas para mim só funciona com MP3.
Eu também estava tentando, quando abrir o fluxo de arquivos de áudio, passe uma dica sobre o formato desse arquivo e envie um arquivo M4A ou AAC:
OSStatus err = AudioFileStreamOpen((__bridge void *)self, TDAudioFileStreamPropertyListener, TDAudioFileStreamPacketsListener, kAudioFileAAC_ADTSType, &_audioFileStreamID);
Onde kAudioFileAAC_ADTSType é o tipo de arquivo enviado que será transmitido por streaming, dessa forma, o "erro de formato de arquivo não suportado" desaparece, mas o aplicativo falha e obtém um novo erro
Isto diz: io: lpc e client: aac.
Alguém sabe o que isso significa?A fila está esperando o arquivo no formato AAC?Por que LPCM (modulação de código de pulso linear), estou enviando M4A ou AAC e não LPCM?Desde já, obrigado.