Pergunta

Eu estou tendo um momento difícil tentar gravar algo diferente de PCM linear no iPhone :-( As amostras que eu encontrei (do SDK SpeakHere, Zdziarski e livros de Sadun e uma em trailsinthesand.com) todo o uso linear PCM mas eu gostaria um formato comumente usado comprimido em vez (sem ima4 ou qualquer que seja o nome é ...).

Eu só não pode descobrir como ajustar o código de exemplo para ser usado com, por exemplo, AAC, MP3 ou AMR vez. Todas as sugestões e dicas para como fazer isso são muito apreciados!

(Btw, eu não acho que um MP3-codificador nem AMR-codificador estão disponíveis devido a problemas de licenciamento, mas AAC existe, ou ???)

Editar / Update: me deparei com o seguinte texto no "iPhone Application Programming Guide" da Apple, 2009-01-06, página 137, seção: Gravação de Áudio:
"Você pode gravar áudio em qualquer um dos formatos listados no‘Preferred Formatos de áudio no iPhone OS’(página 140)", e como preferido formatos de áudio na página 140 são: "Para o áudio comprimido ao reproduzir um som ao mesmo tempo, e quando você não precisa para reproduzir áudio simultaneamente com a aplicação iPod, use o formato AAC empacotado em um arquivo m4a CAF ou. "
Assim, eu interpreto isso como uma indicação clara de que é verdade, não é apenas possível, mas até mesmo preferível, para gravar áudio em formato AAC embrulhado em um arquivo m4a, que é exatamente o que eu quero. Mas ainda assim, eu não sou capaz de conseguir isso?!

Obrigado, / John

Foi útil?

Solução

Continue olhando para esses documentos. Em "Core Audio Essentials", a seção "Core Audio Plug-ins: Unidades de Áudio e Codecs", observa que:

iPhone OS contém a gravação codecs listados na Tabela 2-5. Como você puder ver, nem gravação de MP3 nem AAC é acessível. Isto é devido à alta CPU em cima, e consequente bateria drenar, destes formatos.

A Tabela 2-5 lista vários formatos, mas, como as notas de texto não inclui os que você está procurando. Se você quer que os formatos que você vai ter que trazer o seu próprio codificador.

Outras dicas

É possível no iPhone 3GS e iPod 2ª geração e acima. Eles têm um enconder hardware para AAC. Há um projeto de exemplo da Apple para este que faz exatamente o que você quer fazer:

iPhoneExtAudioFileConvertTest

Uma dica para usar FAAC converter de iPhone-saída linear arquivos PCM para o formato AAC:

I encontrado por experimentação que você tem que usar a bandeira -X na versão de linha de comando da FAAC (rodando em Mac OS X), que "swaps a entrada de bytes." (Eu acho que muda a endian-ness.)

Assim, por exemplo, se você áudio gravado o linear.pcm arquivo no seu iPhone, você pode então executar:

faac -XP linear.pcm

em seu Mac para converter isso para o linear.aac arquivo aac.

Eu estou supondo que isso significa que você pode ser capaz de usar FAAC dentro de seu aplicativo para fazer a conversão, se você quisesse, já que é uma biblioteca C.

Observe também que, tecnicamente, a saída arquivos por serviços de áudio do iPhone são geralmente arquivos CAF, Core Audio Format, que é uma espécie de um formato de invólucro em torno de um monte de codificações possíveis: docs da Apple sobre CAF . A linha de comando acima funciona bem para mim mesmo que linear.pcm começa com o cabeçalho caff.

Você tentou Lame mp3 codificador? Ou FAAC / faad AAC codecs? Você pode incorporá-los em ffmpeg para codecs de áudio ainda mais.

Por que não tentar TPAACAudioConverter escrito pelo lendário Michael Tyson?

TPAACAudioConverter é uma classe Objective-C simples que executa a conversão de qualquer arquivo de áudio a um m4a codificado em AAC, de forma assíncrona com um delegado, ou converte qualquer áudio fornecido por uma classe de fonte de dados (Que prevê a gravação direto para AAC).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top