我正在编写一个使用MediaPlayer和SurfaceView从网络流式传输视频的应用。 一切都在大多数情况下工作正常,但我注意到在重复应用程序重新启动和调试后,我无法再传输文件。
我关闭并重新启动应用程序,重建并运行,关闭并从设备卸载它..没有任何帮助。 当问题发生时,我从MediaPlayer收到此错误(未知错误):
E/MediaPlayer﹕ error (1, -2147483648)
让我恢复正常行为以便一切正常并且流式传输良好的唯一原因是重新启动设备。没有代码更改,没有其他步骤,只需重新启动并重新运行应用程序(不要重新安装它..)
按如下方式创建MediaPlayer对象:
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDisplay(mSurfaceHolder);
mMediaPlayer.setDataSource(getContext(), mVideoUrl);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setLooping(mRunLopping);
mMediaPlayer.setScreenOnWhilePlaying(true);
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setOnErrorListener(this);
mMediaPlayer.prepareAsync();
也许有全球设备资源的东西?缓存?任何线索都会有所帮助。
答案 0 :(得分:0)
每次调用MediaPlayer
时,我就是这样做的...不确定它是否正确,但我发生了相同的事情并且这有所帮助。看起来您的代码可能会将MediaPlayer
个实例堆叠在一起。
public static MediaPlayer mPlayer = null;
void createMediaPlayerIfNeeded() {
if (mPlayer == null) {
mPlayer = new MediaPlayer();
mPlayer.setOnPreparedListener(this);
mPlayer.setOnCompletionListener(this);
mPlayer.setOnErrorListener(this);
} else
mPlayer.reset();
}
}
停止MediaPLayer
:
if (mPlayer != null) {
mPlayer.reset();
mPlayer.release();
mPlayer = null;
}