iPhone - Converter MP3 para WAV?
-
16-09-2019 - |
Pergunta
Existe uma maneira que eu posso converter um arquivo mp3 em um wav / aiff em meu iPhone app? Eu tenho um mp3, mas quero combiná-lo com outros arquivos e a única maneira que eu sei que isto pode ser feito é quando se utiliza formatos PCM.
Alguém pode me ajudar aqui?
Graças.
Algumas coisas eu tentei
Eu tentei usar o AudioConverterFillComplexBuffer () método e seu retorno para converter o mp3 para caf mas os bytes por pacote e por quadro são lidos como 0. Alguma idéia de como eu posso ou se eu posso usar essa função?
Obrigado novamente.
Solução
WAV e AIFF muitas vezes (normalmente?) Contêm PCM, então qual é a objeção lá? Ou você está dizendo que você tem que obter os seus dados MP3 para PCM, a fim de misturá-lo (talvez em um misturador multicanal unidade de áudio). Se você quiser seriamente para fazer isso, olhar para Core Audio, especificamente:
- Serviços de arquivo de áudio (para ler o formato MP3 e gravação AIFF ou WAV)
- Audio arquivo de serviços de conversão (para converter os dados MP3 para PCM, e / ou a codificação de PCM para algum outro codec se você fosse escrever um arquivo). Note-se que um determinado conversor não pode converter entre dois formatos codificados; você pode fazer MP3-to-PCM ou PCM-to-AAC, mas para fazer MP3-to-AAC, você precisa de dois conversores.
- estendidas Serviços de arquivo de áudio, que combinam ambos acima.
Confira o ConvertFile exemplo no Core Audio SDK . Isso abre um arquivo de origem para a leitura, descreve o formato desejado do arquivo de destino, lê buffers de um e escreve-los para o outro. As exposições de código ambas o uso isolado de Serviços de arquivo + de conversão e o uso conveniente de ExtAudioFiles.
Além disso, certifique-se de compreender a diferença entre codecs e formatos de arquivo, e quais combinações de codec / formato são legais. Fiquei surpreso na primeira vez eu descobri que PCM deve ser little-endian em um WAV, big-endian em uma AIFF.
Outras dicas
Você provavelmente pode fazer isso com o direito conjunto de unidades Core Audio, mas provavelmente vai usar um monte de CPU. Você deve converter os dados antes do tempo (talvez em tempo de compilação?), Se você puder.