2011-07-12 79 views
6

我們從埃Linux的ffserver的/ ffmpeg的通過HTTP流式音頻。 ffmpeg音頻編解碼器是PCM簽名的16位小端「pcm_s16le」。 ffmpeg流格式是「wav」。上述這些問題都自稱是這裏的Android支持:http://developer.android.com/guide/appendix/media-formats.html#core的Android流WAV音頻錯誤:MediaPlayer的準備失敗:狀態=爲0x1

VLC查找並播放沒有任何問題的流。 在VLC 「編解碼器詳細信息」,它說: 類型:音頻,編解碼器:PCM S16 LE(araw) 通道:立體聲 採樣率:48000赫茲每個樣品 位數:16

我們建立了簡單的測試應用程序下面來拾取和播放Android中的流,並得到這個錯誤: java.io.IOException:準備失敗:狀態= 0x1

我們使用HTTP調試器專業版檢查HTTP頭。 響應頭項目(通過VLC正常播放時)是: [迴應]:HTTP/1.0 200 OK 雜注:無緩存 內容類型:音頻/ X-WAV

我們一直在網上搜索在這個問題上超過兩天的幫助,並已空手而來。任何幫助將大大讚賞。

------------ TEST APP ------------------------ 包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延伸活動{ @Override 公共無效的onCreate(捆綁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(); 
    } 
} 

}

------------錯誤日誌------------------------

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) 

回答

0

雖然這是晚了,我也得到了同樣的錯誤時,用MediaPlayer工作。

一些ř& d後,我發現這個問題的根源。對於未來我寫下它回答區域

在我的情況下發生這種情況,因爲我給UnSupported File to MediaPlayer.

因此,如果發生這種情況,然後檢查您指定的文件是正確的。

其他原因:

  1. 文件路徑錯誤,不正確的URI或目錄
  2. 權限問題
相關問題