2009-03-24 12 views
5

Estoy teniendo dificultades para grabar algo que no sea PCM lineal en el iPhone :-( Las muestras que he encontrado (libros de SDK's SpeakHere, Zdziarski y Sadun y el de trailsinthesand.com) todos usan PCM lineal, pero me gustaría usar un formato comprimido comúnmente usado (no ima4 o cualquiera que sea el nombre ...).Cómo grabar algo que no sea PCM lineal en el iPhone

Simplemente no puedo entender cómo modificar el código de muestra para ser utilizado con, por ejemplo, AAC, MP3 o AMR en su lugar. Cualquier sugerencia y sugerencias de cómo hacerlo son muy apreciadas!

(Por cierto, no creo que un codificador de MP3 ni AMR-encoder están disponibles debido a problemas de licencia, pero AAC sí existe, o ???)

Editar/actualización: me topé con el siguiente texto en "iPhone Application Programming Guide" de Apple, 2009-01-06, página 137, sección: Grabación de audio:
" Puede grabar audio en cualquiera de los formatos listados en "Formatos de audio preferidos en iPhone OS" (página 140) ", y como formatos de audio preferidos en la página 140 son:" Para audio comprimido cuando se reproduce un sonido a la vez, y cuando no es necesario reproducir audio simultáneamente con la aplicación iPod, utilice el formato AAC empaquetado en un archivo CAF o m4a. "
Por lo tanto, interpreto eso como una clara indicación de que, de hecho, no solo es posible, sino incluso preferible, grabar audio en formato AAC envuelto en un archivo m4a, que es justo lo que Nuevo Testamento. Pero aún así, no soy capaz de lograr eso?

Gracias, /John

Respuesta

4

Siga mirando esos documentos. En "Core Audio Esencial", la sección "núcleo Plugins de audio: Audio Units y codecs" señala que:

iPhone OS incluye la grabación códecs que figuran en la Tabla 2-5. Como puede ver, ni la grabación de MP3 ni AAC es disponible. Esto se debe a la alta sobrecarga de la CPU , y la consiguiente descarga de la batería , de estos formatos.

La tabla 2-5 enumera varios formatos, pero como las notas de texto no incluyen las que está buscando. Si quieres esos formatos, tendrás que traer tu propio codificador.

+0

¡Gracias por la referencia a esa documentación! Eso deja en claro que tengo que obtener un codificador externo. –

0

¿Usted ha intentado Lame codificador de mp3? O faac/faad códecs AAC? Puede incrustarlos en ffmpeg para obtener aún más códecs de audio.

+0

Prefiero no utilizar otra lib si eso puede evitarse, entonces no, no he probado ninguna de esas librerías. Por ejemplo, seguramente debe ser posible grabar en AAC en iPhone sin recurrir a herramientas externas, ¿verdad? –

+1

Desde http://developer.apple.com/iphone/library/documentation/MusicAudio/Conceptual/CoreAudioOverview/index.html, AAC, MP3 y AMR deberían estar disponibles de forma nativa en el iPhone. Sugerí alternativas de código abierto porque pensé que esto no coincidía con tus necesidades. – mouviciel

+0

Creo que todos estos códecs son decodificadores capaces, pero cuando se trata de codificación, no creo que MP3 y AMR sean capaces. No sé sobre AAC. De nuevo, mi pregunta es: ¿cómo modifico las muestras existentes para usar algo que no sea PCM lineal? –

1

Un consejo para el uso FAAC convertir de archivos PCM lineales iPhone de salida al formato AAC:

He encontrado por experimentación que usted tiene que utilizar la bandera -X de la versión de línea de comandos de FAAC (que se ejecuta en Mac OS X), que "intercambia los bytes de entrada". (Supongo que cambia la endian-dad.)

Así, por ejemplo, si el audio grabado el archivo linear.pcm en su iPhone, usted podría continuación, ejecute:

faac -XP linear.pcm 

en su Mac para convertir esto en el archivo aac linear.aac.

Supongo que esto significa que es posible que pueda usar faac dentro de su aplicación para realizar la conversión, si lo desea, ya que es una biblioteca de C.

También tenga en cuenta que, técnicamente, los archivos emitidos por los servicios de audio del iPhone son generalmente archivos CAF, Core Audio Format, que es una especie de formato envoltorio alrededor de un conjunto de posibles codificaciones: Apple's docs on CAF. La línea de comando anterior funciona bien para mí aunque linear.pcm comience con el encabezado caff.

2

Es posible en iPhone 3GS y iPod de segunda generación o superior. Tienen un buscador de hardware para AAC. Hay un proyecto de ejemplo de Apple para este que hace exactamente lo que quiere hacer:

iPhoneExtAudioFileConvertTest

0

Por qué no tratar TPAACAudioConverter escrito por el legendario Michael Tyson?

TPAACAudioConverter es un simple clase Objective-C que realiza la conversión de cualquier archivo de audio a un m4a AAC-codificado, de forma asíncrona con un delegado, o convierte cualquier audio proporcionada por una clase de fuente de datos (que proporciona para grabar directamente en AAC).

Cuestiones relacionadas