我们在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“Codec Details”下,它说: 类型:音频,编解码器:PCM S16 LE(araw) 频道:立体声 采样率:48000 Hz 每个样本的比特:16
我们在下面构建了简单的测试应用程序来获取并在Android中播放流并获得此错误: java.io.IOException:准备失败:status = 0x1
我们使用HTTP Debugger Pro检查了HTTP标头。 响应标题项(通过VLC正常播放时)是: [响应]:HTTP / 1.0 200 OK Pragma:没有缓存 内容类型:audio / 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;
public class BareBonesStreamTestActivity extends Activity { @覆盖 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)
答案 0 :(得分:1)
答案 1 :(得分:1)
虽然这已经很晚了,但在处理MediaPlayer
时我也遇到了同样的错误。
在一些R& D之后我找到了问题的根源。对于未来我写下来回答区域
就我而言,这是因为我提供了 UnSupported File to MediaPlayer.
所以,如果发生这种情况,请检查您的给定文件是否正确。
其他原因: