2011-07-12 17 views
6

Estamos transmitiendo audio a través de http desde ffserver/ffmpeg en Angstrom Linux. El códec de audio ffmpeg está firmado por PCM little endian de 16 bits "pcm_s16le". El formato de flujo ffmpeg es "wav". Se dice que ambos son compatibles con Android aquí: http://developer.android.com/guide/appendix/media-formats.html#coreAndroid Streaming Wav Audio Error: MediaPlayer Prepare failed: estado = 0x1

VLC encuentra y reproduce la transmisión sin ningún problema. Bajo VLC "Codec detalles", que dice: Tipo: Audio, Códec: PCM S16 LE (araw) Canales: Stereo tasa Muestra: 48000 Hz bits por muestra: 16

Construimos la aplicación de prueba sencilla a continuación para recoger y reproducir la secuencia en Android y obtener este error: java.io.IOException: Preparar el error .: estado = 0x1

Comprobamos el encabezado HTTP utilizando HTTP Debugger Pro. Los artículos cabecera de respuesta (cuando se juega normalmente a través de VLC) son: [Respuesta]: HTTP/1.0 200 OK Pragma: no-cache Content-Type:/audio x-wav

Hemos estado buscando por la web para obtener ayuda sobre este tema durante más de dos días y han venido con las manos vacías. Cualquier ayuda sería enormemente apreciada.

------------ PRUEBA DE APLICACIÓN ------------------------ paquete com.shaneahern.streamtest; import java.io.IOException; import android.app.Activity; import android.media.AudioManager; import android.media.MediaPlayer; import android.os.Bundle; import android.util.Log;

BareBonesStreamTestActivity clase pública se extiende Actividad {@ Override public void onCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState);

String streamUrl = "http://192.168.24.123:8080/test.wav"; 

    MediaPlayer mp = new MediaPlayer(); 
    Log.i("BareBonesStreamTestActivity", "MediaPlayer created"); 

    try { 
     mp.setDataSource(streamUrl); 
     Log.i("BareBonesStreamTestActivity", "setDataSource to " + streamUrl); 

     mp.setAudioStreamType(AudioManager.STREAM_MUSIC); 
     Log.i("BareBonesStreamTestActivity", "setAudioStreamType to AudioManager.STREAM_MUSIC"); 

     mp.prepare(); 
     Log.i("BareBonesStreamTestActivity", "prepare succeeded, calling start"); 

     mp.start(); 
    } catch (IllegalStateException e) { 
     Log.i("BareBonesStreamTestActivity", "prepare failed with IllegalStateException"); 
     e.printStackTrace(); 
    } catch (IOException e) { 
     Log.i("BareBonesStreamTestActivity", "prepare failed with IOException"); 
     e.printStackTrace(); 
    } 
} 

}

------------ REGISTRO ERROR ------------------------

I/BareBonesStreamTestActivity( 727): MediaPlayer created 
I/StagefrightPlayer( 33): setDataSource('http://192.168.24.123:8080/ test.wav') 
I/BareBonesStreamTestActivity( 727): setDataSource to http://192.168.24.123:8080/test.wav 
I/BareBonesStreamTestActivity( 727): setAudioStreamType to AudioManager.STREAM_MUSIC 
E/MediaPlayer( 727): error (1, -2147483648) 
I/BareBonesStreamTestActivity( 727): prepare failed with IOException 
W/System.err( 727): java.io.IOException: Prepare failed.: status=0x1 
W/System.err( 727):  at android.media.MediaPlayer.prepare(Native Method) 
W/System.err( 727):  at com.shaneahern.streamtest.BareBonesStreamTestActivity.onCreate(BareBonesStr eamTestActivity.java: 30) 
W/System.err( 727):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java: 1047) 
W/System.err( 727):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java: 2627) 
W/System.err( 727):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java: 2679) 
W/System.err( 727):  at android.app.ActivityThread.access $2300(ActivityThread.java:125) 
W/System.err( 727):  at android.app.ActivityThread $H.handleMessage(ActivityThread.java:2033) 
W/System.err( 727):  at android.os.Handler.dispatchMessage(Handler.java:99) 
W/System.err( 727):  at android.os.Looper.loop(Looper.java:123) 
W/System.err( 727):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
W/System.err( 727):  at java.lang.reflect.Method.invokeNative(Native Method) 
W/System.err( 727):  at java.lang.reflect.Method.invoke(Method.java:521) 
W/System.err( 727):  at com.android.internal.os.ZygoteInit $MethodAndArgsCaller.run(ZygoteInit.java:868) 
W/System.err( 727):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
W/System.err( 727):  at dalvik.system.NativeStart.main(Native Method) 

Respuesta

0

Aunque esto es tarde, también recibí el mismo error cuando estaba trabajando con MediaPlayer.

Después de algunos R & D He encontrado el origen del problema. Por Futuro anoto para contestar área

En mi caso esto ocurrió porque di UnSupported File to MediaPlayer.

lo tanto, si esto sucede, entonces compruebe que el archivo en cuestión es correcta.

Otras razones: error

  1. Archivo ruta, URI incorrecto o directorio
  2. Permiso Problema
Cuestiones relacionadas