Audio Transmisión en directo: maximización de la base de usuarios (problema de descodificación)

Me gustaría crear una aplicación que se basará en la transmisión en vivo (radio). Aquí hay algunos enlaces que puedo comenzar con: 1) mp3 , 2) aac (" http://79.143.70.114:8000/detifm-64k.aac ").

Desafortunadamente, estos vínculos no pueden ser reproducidos por MediaPlayer en dispositivos con Android 2.x. Estoy un poco confundido acerca de esta situación ya que esta pieza de documentación establece que HTTP / HTTPS transmisión en vivo proyecto de protocolo sólo es parcialmente compatible con los sistemas de Android 2.x – por ejemplo, mi dispositivo (Samsung I9001) no es capaz de reproducir enlaces Desde arriba pero capaz de jugar este que es también una transmisión en vivo mp3 como se indica aquí . En otros dispositivos como Samsung GTS 5830, incluso el último enlace no se puede reproducir.

Mi objetivo es maximizar la base de usuarios tanto como sea posible – ¿qué puedo hacer para lograrlo?

En primer lugar, no estoy muy familiarizado con las tecnologías de codificación / decodificación, pero supongo que hay diferentes maneras de codificar el mismo mp3, ya que el mp3 no se puede reproducir mientras " http://188.138.112.71:9018/ " ( City Beat Radio) puede. Así que necesito saber qué tipos de codificación son más adecuados para Android y averiguar cuál será compatible con la mayoría de los dispositivos. Esto indica "Mono / Stereo 8-320Kbps constante (CBR) o tasa de bits variable (VBR)" – es todo lo que necesito saber? ¿Qué sobre jugar corrientes vivas en Samsung GTS 5830?

En segundo lugar, la descodificación depende del hardware. He visto una biblioteca llamada Vitamio que resuelve el problema de jugar el primer enlace, pero no me gusta la idea de que el usuario tiene que descargar software adicional de terceros. Además, hay un MoboPlayer que también puede jugar el primer enlace. Esto se debe a que utilizan descodificación de software – Me pregunto si hay alguna biblioteca de decodificación de software que pueda incorporar a mi proyecto. Supongo que escribir mi propio decodificador sería tedioso, pero sus sugerencias son bienvenidas.

En tercer lugar, he escuchado que hay una forma de transmisión en vivo a través del protocolo RTSP, que es mejor soportado por Android, pero no estoy familiarizado con esta práctica y no he encontrado ningún ejemplo de secuencias en vivo mp3 que puedo comprobar. ¿Crees que vale la pena intentarlo? ¿Y podría dar un ejemplo de transmisión en vivo de mp3 rstp?

Aquí está el código simple que usé para probar. El primer enlace ( mp3 ) resultó en java.io.IOException: Prepare failed.: status=0xFFFFFFF6 y el segundo ([aac] [2]) – java.io.IOException: Prepare failed.: status=0x1

 mMediaPlayer = new MediaPlayer(); try { mMediaPlayer .setDataSource( this, Uri.parse("http://radio02-cn03.akadostream.ru:8114/detifm192.mp3")); mMediaPlayer.setOnPreparedListener(mOnPreparedListener); mMediaPlayer.setOnErrorListener(mOnErrorListener); //mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mMediaPlayer.prepare(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (NotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } private OnPreparedListener mOnPreparedListener = new OnPreparedListener() { @Override public void onPrepared(MediaPlayer mplayer) { mplayer.start(); } }; 

UPD

LOGCAT para el primer enlace (mp3) en Samsung I9001:

08-28 13: 38: 45.522: E / MediaPlayer (31713): mensaje recibido msg = 3, ext1 = 0, ext2 = 0 (31713): info / warning (1, 26) 08-28 13: 38: 45.552: E / MediaPlayer (31713): mensaje recibido Msg = 100, ext1 = -10, ext2 = -10 08-28 13: 38: 45.552: E / MediaPlayer (31713): error (-10, -10) 08-28 13: 38: 45.562: W / System. Error (31713): java.io.IOException: Error de preparación .: status = 0xFFFFFFF6 08-28 13: 38: 45.562: W / System.err (31713): en android.media.MediaPlayer.prepare (Método nativo) 08- 28 13: 38: 45.562: W / System.err (31713): en com.example.sampleradioapp.MainActivity.onCreate (MainActivity.java:53) 08-28 13: 38: 45.562: W / System.err (31713) : En android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1047) 08-28 13: 38: 45.562: W / System.err (31713): en android.app.ActivityThread.performLaunchActivity (ActivityThread.java:1615) 08 -28 13: 38: 45.562: W / System.err (31713): en android.app.ActivityThread.handleLaunc HActivity (ActivityThread.java:1667) 08-28 13: 38: 45.562: W / System.err (31713): en android.app.ActivityThread.access $ 1500 (ActivityThread.java:117) 08-28 13: 38: 45.562 : W / System.err (31713): en android.app.ActivityThread $ H.handleMessage (ActivityThread.java:935) 08-28 13: 38: 45.562: W / System.err (31713): en android.es. Handler.dispatchMessage (Handler.java:99) 08-28 13: 38: 45.562: W / System.err (31713): en android.os.Looper.loop (Looper.java:130) 08-28 13:38: 45.562: W / System.err (31713): en android.app.ActivityThread.main (ActivityThread.java:3687) 08-28 13: 38: 45.562: W / System.err (31713): en java.lang.reflect .Method.invokeNative (Método nativo) 08-28 13: 38: 45.562: W / System.err (31713): en java.lang.reflect.Method.invoke (Method.java:507) 08-28 13:38: 45.592: W / System.err (31713): en com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:867) 08-28 13: 38: 45.592: W / System.err (31713): En com.android.internal.os.ZygoteInit.main (ZygoteInit.java:625) 08-28 13: 38: 45.592: W / System.err (31713): at Dalvik.system.NativeStart.main (Método nativo) 08-28 13: 38: 45.622: I / MediaPlayer (31713): Info (1,26)

LOGCAT para el primer enlace (mp3) en Samsung GTS 5830:

08-28 13: 15: 54.119: I / MediaPlayer (24178): uri es: http://radio02-cn03.akadostream.ru:8114/detifm192.mp3 08-28 13: 15: 54.119: I / MediaPlayer (24178) ): Ruta es nula 08-28 13: 15: 54.119: D / MediaPlayer (24178): No se pudo abrir el archivo en el lado del cliente, intentando el lado del servidor 08-28 13: 16: 05.139: E / MediaPlayer (24178): error (1, -2147483648) 08-28 13: 16: 05.249: E / MediaPlayer (24178): Error (1, -2147483648)

LOGCAT para el segundo enlace (aac) en Samsung I9001:

08-28 13: 40: 46.681: E / MediaPlayer (31748): mensaje recibido msg = 100, ext1 = 1, ext2 = -2147483648 08-28 13: 40: -2147483648) 08-28 13: 40: 46.681: W / System.err (31748): java.io.IOException: Error de preparación .: status = 0x1 08-28 13: 40: 46.681: W / System.err (31748 ): En android.media.MediaPlayer.prepare (método nativo) 08-28 13: 40: 46.681: W / System.err (31748): en com.example.sampleradioapp.MainActivity.onCreate (MainActivity.java:53) 08 -28 13: 40: 46.691: W / System.err (31748): en android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1047) 08-28 13: 40: 46.691: W / System.err (31748): En android.app.ActivityThread.performLaunchActivity (ActivityThread.java:1615) 08-28 13: 40: 46.691: W / System.err (31748): en android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:1667) 08- 28 13: 40: 46.691: W / System.err (31748): en android.app.ActivityThread.access $ 1500 (ActivityThread.java:117) 08-28 13: 40: 46.691: W / System.err (31748): En android.app.ActivityThread $ H.handle Mensaje (ActivityThread.java:935) 08-28 13: 40: 46.691: W / System.err (31748): en android.os.Handler.dispatchMessage (Handler.java:99) 08-28 13: 40: 46.701: W / System.err (31748): en android.os.Looper.loop (Looper.java:130) 08-28 13: 40: 46.701: W / System.err (31748): en android.app.ActivityThread.main (ActivityThread.java:3687) 08-28 13: 40: 46.701: W / System.err (31748): en java.lang.reflect.Method.invokeNative (Método nativo) 08-28 13: 40: 46.701: W / System.err (31748): en java.lang.reflect.Method.invoke (Method.java:507) 08-28 13: 40: 46.701: W / System.err (31748): en com.android.internal.os .ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:867) 08-28 13: 40: 46.701: W / System.err (31748): en com.android.internal.os.ZygoteInit.main (ZygoteInit.java:625) 08-28 13: 40: 46.701: W / System.err (31748): at dalvik.system.NativeStart.main (Native Method)

LOGCAT para el segundo enlace (aac) en Samsung GTS 5830:

08-28 13: 19: 03.929: D / MediaPlayer (24352): No se pudo abrir el archivo en el lado del cliente, intentando el servidor 08-28 13: 19: 03.929: I / MediaPlayer (24352): ruta es nula 13: 19: 29.119: E / MediaPlayer (24352): error (1, -2147483648) 08-28: W / System.err (24352): java.io.IOException: Error de preparación .: status = 0x1 08-28 13: 19: 29.119: W / System.err (24352): en android.media.MediaPlayer.prepare (método nativo) 08-28 13: 19: 29.119: W / System.err (24352): at Com.example.sampleradioapp.MainActivity.onCreate (MainActivity.java:53) 08-28 13: 19: 29.119: W / System.err (24352): en android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1047) 08 -28 13: 19: 29.119: W / System.err (24352): en android.app.ActivityThread.performLaunchActivity (ActivityThread.java:1615) 08-28 13: 19: 29.119: W / System.err (24352): En android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:1667) 08-28 13: 19: 29.119: W / System.err (24352): en android.app.ActivityThread.access $ 1500 (ActivityThread.java:117) 08 -28 13: 19: 29.119: W /System.err(24352): en android.app.ActivityThread $ H.handleMessage (ActivityThread.java:935) 08-28 13: 19: 29.119: W / System.err (24352): en android.os.Handler. DispatchMessage (Handler.java:99) 08-28 13: 19: 29.119: W / System.err (24352): en android.os.Looper.loop (Looper.java:130) 08-28 13: 19: 29.119: W / System.err (24352): en android.app.ActivityThread.main (ActivityThread.java:3687) 08-28 13: 19: 29.119: W / System.err (24352): en java.lang.reflect.Method .invokeNative (método nativo) 08-28 13: 19: 29.119: W / System.err (24352): en java.lang.reflect.Method.invoke (Method.java:507) 08-28 13: 19: 29.129: W / System.err (24352): en com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:867) 08-28 13: 19: 29.129: W / System.err (24352): en com .android.internal.os.ZygoteInit.main (ZygoteInit.java:625) 08-28 13: 19: 29.129: W / System.err (24352): en dalvik.system.NativeStart.main (Método nativo)

Gracias por sus sugerencias.

 hi this may helps you 

Fluyendo como

 And Set MediaPlayer as private void initializeMediaPlayer() { player = new MediaPlayer(); try { player.setDataSource("http://usa8-vn.mixstream.net:8138"); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.