【问题标题】:Android Streaming Wav Audio Error: MediaPlayer Prepare failed: status=0x1Android 流式 Wav 音频错误:MediaPlayer 准备失败:状态 = 0x1
【发布时间】:2011-07-12 22:50:21
【问题描述】:

我们在 Angstrom Linux 上通过 http 从 ffserver/ffmpeg 流式传输音频。 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 赫兹 每个样本的位数:16

我们在下面构建了一个简单的测试应用程序来在 Android 中拾取和播放流并收到此错误: java.io.IOException:准备失败。:状态=0x1

我们使用 HTTP Debugger Pro 检查了 HTTP 标头。 响应头项目(通过 VLC 正常播放时)是: [响应]:HTTP/1.0 200 OK Pragma:无缓存 内容类型:音频/x-wav

两天多来,我们一直在网上搜索有关此问题的帮助,但结果却一无所获。任何帮助将不胜感激非常

------------测试应用程序------------ 包 com.shaneahern.streamtest; 导入 java.io.IOException; 导入android.app.Activity; 导入android.media.AudioManager; 导入android.media.MediaPlayer; 导入android.os.Bundle; 导入android.util.Log;

公共类 BareBonesStreamTestActivity 扩展 Activity { @覆盖 公共无效 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) 

【问题讨论】:

    标签: android audio streaming media-player wav


    【解决方案1】:

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

    Another usefull link

    我自己下载了一个原始流,效果很好。

    【讨论】:

    • 好主意!谢谢!我去看看。
    【解决方案2】:

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

    经过一些研发,我找到了问题的根源。对于未来,我把它写下来回答区

    就我而言,这是因为我给了 UnSupported File to MediaPlayer.

    所以,如果发生这种情况,请检查您给定的文件是否正确。

    其他原因:

    1. 文件路径错误,URI 或目录不正确
    2. 权限问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多