Según tengo entendido, Android solo reproducirá audio en formato AAC si está codificado como MPEG-4 o 3GPP.Transmisión de audio AAC con Android
Puedo reproducir audio AAC codificado como M4A cuando es local para la aplicación, pero falla al obtenerlo de un servidor.
Lo siguiente funciona, ya que el archivo m4a se guarda localmente en el directorio res/raw.
MediaPlayer mp = MediaPlayer.create(this, R.raw.*file*);
mp.start();
Lo siguiente no funciona. (Pero lo hace con MP3).
Uri uri = Uri.parse("http://*example.com*/blah.m4a");
MediaPlayer mp = MediaPlayer.create(this, uri);
mp.start();
¿Alguien puede arrojar alguna luz sobre por qué falla cuando el archivo de audio m4a no es local?
Aquí es (parte de) el error ...
ERROR/PlayerDriver(542): Command PLAYER_INIT completed with an error or info UNKNOWN PVMFStatus
ERROR/MediaPlayer(769): error (200, -32)
WARN/PlayerDriver(542): PVMFInfoErrorHandlingComplete
DEBUG/MediaPlayer(769): create failed:
DEBUG/MediaPlayer(769): java.io.IOException: Prepare failed.: status=0xC8
DEBUG/MediaPlayer(769): at android.media.MediaPlayer.prepare(Native Method)
DEBUG/MediaPlayer(769): at android.media.MediaPlayer.create(MediaPlayer.java:530)
DEBUG/MediaPlayer(769): at android.media.MediaPlayer.create(MediaPlayer.java:507)
...
estoy focalización SDK 1.6.
Estás confundiendo la codificación con formatos de archivo. AAC es un formato de codificación de audio. M4A es un tipo de archivo, o paquete, que se ubica alrededor de los datos de AAC. 3GPP es similar pero puede contener otros tipos de audio codificado. Vea aquí http://developer.android.com/guide/appendix/media-formats.html y aquí http://en.wikipedia.org/wiki/M4a. – greg7gkb
Cierto, debería haber descrito 3GPP y M4A como "contenedores" para audio AAC. En lo alto de mi cabeza, * creo que * M4A solo puede usarse para archivos estáticos, y 3GPP solo puede transmitir usando RTSP en lugar de HTTP. Esto causaría problemas para la transmisión HTTP. Corrígeme si estoy equivocado ... – bdls