Lectura de audio AAC del contenedor RIFF en iOS

Tengo un archivo que es un contenedor RIFF con 3 fragmentos; El fragmento RIFF tiene un identificador 'WAVE'. El primer fragmento es 'fmt', el segundo es 'data', el último es 'eink' (mi propio fragmento). Entonces ese archivo es generado por código c# que usa directshow. El audio está codificado en AAC. Así que no quiero reproducir el audio, que está almacenado en el fragmento de 'datos', en iOS 5.*.
Intenté leer todo el fragmento de 'datos' y usar esos bytes en [initWithData:error:][1] método de AVAudioPlayer. Pero parece funcionar de manera diferente.
De lo que pensaba, podría tratar de hacer mi propio m4a archivo con esos bytes y reprodúzcalo, pero ¿hay alguna otra forma correcta? Por favor, sugiérame algunas formas de investigarlo. ¿Dónde leer? U otro método.

preguntado el 01 de julio de 12 a las 20:07

AAC dentro de WAV podría estar en los siguientes formatos: ADIF, ADTS y M4A. ¿Sabe qué formato está presente en su archivo WAV? Algunos enlaces que pueden ser de ayuda para encontrar el formato (a) wiki.multimedia.cx/index.php?title=ADTS (B) desarrollador.apple.com/library/ios/#technotes/tn2236/_index.html -

No sé si puede ayudar a determinar el formato, pero cuando cambié el nombre del archivo a *.aac, VLC podría reproducirlo. Todavía estoy investigando al respecto. Actualizaré la información cuando otro desarrollador, que creó este archivo, diga su palabra. -

1 Respuestas

Few concepts regarding WAV, AAC and MP4

WAV es un formato contenedor que puede almacenar cualquier otro dato de audio, tanto comprimido como sin comprimir. Más detalles en http://www.sonicspot.com/guide/wavefiles.html

AAC se puede encapsular de múltiples maneras. Los más comunes son ADTS y MP4. Los detalles del formato del contenedor AAC están en http://en.wikipedia.org/wiki/Advanced_Audio_Coding#Container_formats

ADTS es un formato relativamente simple, en el que cada cuadro AAC está precedido por un encabezado. Más detalles sobre el encabezado ADTS están en http://wiki.multimedia.cx/index.php?title=ADTS

MP4 es un formato relativamente más complejo, con soporte para almacenar varios formatos de audio y formatos de video. En el caso de MP4, la información del encabezado se almacena una vez en las estructuras MP4 del archivo y el resto de los marcos AAC no necesitan tener ninguna información del encabezado.

How to support playing WAV file with AAC payload in iOS?

  • Determinar el tipo de carga útil, ya sea ADTS o MP4 o ADIF
  • Si el archivo se puede convertir sin conexión, use bibliotecas de terceros como FFMPEG para convertir archivos WAV con AAC a M4A, formato compatible con iOS.
  • si es necesario convertir el archivo en el dispositivo, el mejor método sería extraer los datos del marco AAC de la carga útil, convertirlos a la forma en que iOS espera y decodificarlos. La mejor manera de determinar esto sería convertir el archivo a M4A sin conexión y ver cómo se envían los datos al reproductor de audio iOS.

Respondido 07 Jul 12, 23:07

Entonces, entiendo bien, AAC se puede almacenar como ADTS o ADIF dentro de la carga útil de WAV. ¿Y los marcos de iOS solo pueden leer contenedores mp4? ¿Cómo puedo determinar si los datos son ADTS o ADIF? ¿Qué debo hacer cuando lo descubra? Y por favor, explique más detalladamente la última solución? Muchas gracias por la ayuda. - danskeel

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.