首页 文章

Android Streaming Wav Audio Error:MediaPlayer准备失败:status = 0x1

提问于
浏览
7

我们在Angstrom Linux上通过来自ffserver / ffmpeg的http传输音频 . ffmpeg音频编解码器是PCM签名的16位小端"pcm_s16le" . ffmpeg流格式为"wav" . 声称这两款产品都支持Android:http://developer.android.com/guide/appendix/media-formats.html#core

VLC查找并播放流没有任何问题 . 在VLC“编解码器详细信息”下,它说:类型:音频,编解码器:PCM S16 LE(araw)通道:立体声采样率:48000 Hz每个样本位数:16

我们在下面构建了简单的测试应用程序来获取并在Android中播放流并获得此错误:java.io.IOException:准备失败:status = 0x1

我们使用HTTP Debugger Pro检查了HTTP标头 . Response Header项目(通过VLC正常播放时)为:[Response]:HTTP / 1.0 200 OK Pragma:no-cache内容类型:audio / x-wav

我们已经在网上搜索了这个问题超过两天的帮助,并且空手而归 . 任何帮助将不胜感激 .

------------ TEST APP ------------------------ package 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;

public class BareBonesStreamTestActivity extends Activity {@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(); 
    } 
}

}

------------错误日志------------------------

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)

2 回答

  • 1

    我想你可能想看看:Using AudioTrack to play Wav file

    Another usefull link

    我自己下载了一个原始流,它工作得很好 .

  • 1

    虽然这已经很晚了,但在使用 MediaPlayer 时我也遇到了同样的错误 .

    经过一番研发后,我找到了问题的根源 . 对于未来我写下来回答区域

    在我的情况下,这发生是因为我给了 UnSupported File to MediaPlayer.

    因此,如果发生这种情况,请检查您的给定文件是否正确 .

    Other reasons:

    • File path error, incorrect URI or directory

    • Permission Problem

相关问题