2011-07-12 14 views
6

Przesyłamy strumieniowo dźwięk przez http z ffserver/ffmpeg na Angstrom Linux. Kodek audio ffmpeg jest podpisany przez PCM 16-bitowym małym endianem "pcm_s16le". Format strumienia ffmpeg to "wav". Obydwa z nich są obsługiwane w systemie Android: http://developer.android.com/guide/appendix/media-formats.html#coreAndroid Streaming Wav Błąd audio: MediaPlayer Przygotowanie nie powiodło się: status = 0x1

VLC znajduje i odtwarza strumień bez żadnych problemów. Pod OHP "Codec Szczegóły", to mówi: Typ: Audio Codec: PCM S16 LE (ARAW) Kanały: Stereo stawka Sample: 48000 Hz bitów na próbkę: 16

Budujemy prostą aplikację testową poniżej, aby pobrać i odtworzyć strumień w systemie Android i uzyskać ten błąd: java.io.IOException: Przygotowanie nie powiodło się: status = 0x1

Sprawdziliśmy nagłówek HTTP za pomocą HTTP Debugger Pro. Pozycje nagłówku odpowiedzi (gdy gra normalnie przez VLC) to: [Odpowiedź]: HTTP/1.0 200 OK Pragma: no-cache Content-Type:/AUDIO X-wav

Zostaliśmy wyszukać w internecie o pomoc w tej sprawie przez ponad dwa dni i pojawiły się z pustymi rękami. Każda pomoc byłaby doceniana bardzo dobrze.

------------ APLIKACJA TESTOWA ------------------------ pakiet 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;

klasy publicznej BareBonesStreamTestActivity rozciąga Aktywność { @Override void onCreate (Pakiet 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(); 
    } 
} 

}

------------ bâędów ------------------------

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) 

Odpowiedz

0

Chociaż jest późno, również wystąpił ten sam błąd podczas pracy z MediaPlayer.

Po pewnym R & D znalazłem źródło problemu. Dla Przyszłości Zapiszę to odpowiedzieć Powierzchnia

W moim przypadku miało to miejsce, ponieważ dałem UnSupported File to MediaPlayer.

Tak więc, jeśli to się stanie, a następnie sprawdzić, czy dany plik ma rację.

Inne przyczyny: Błąd

  1. ścieżka pliku, nieprawidłowy URI lub katalogów
  2. Pozwolenie Problem
Powiązane problemy