最近在開發(fā)音視頻,我用的都是mediaplayer厦章,有時會出現(xiàn)error(-38镇匀, 0),MediaPlayer: stop called in state 0 或者是其它錯誤袜啃,應該是在還未就緒的情況下調用了start導致發(fā)生-38汗侵。
在播放視頻的過程中時候,如果緩沖的部分播完了群发,而沒有繼續(xù)緩沖視頻而播放就會報error(1晰韵, -1004),當報完錯之后熟妓,播放器不會再繼續(xù)自動緩沖播放雪猪。目前沒有發(fā)現(xiàn)解決的辦法,暫時的解決方案就是更換播放引擎起愈,使用B站的開源播放器ijkplayer只恨。
下面貼出我的初始化和銷毀mediaplayer對象的代碼。僅供參考
初始化方法(初始化完抬虽,在onPrepared里調用mMediaPlayer.start())官觅;
public void playPrepareAsync() {
try {
if (mUrl == null) {
return;
}
destoryMediaPlayer();
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setOnCompletionListener(this);
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setOnSeekCompleteListener(this);
mMediaPlayer.setOnErrorListener(this);
mMediaPlayer.setOnBufferingUpdateListener(this);
if (mUrl.startsWith("android.resource://")) {
mMediaPlayer.setDataSource(this, Uri.parse(mUrl));
} else {
mMediaPlayer.setDataSource(mUrl);
}
mMediaPlayer.prepareAsync();
} catch (IllegalArgumentException e) {
e.printStackTrace();
Log.e(TAG, "IllegalArgumentException無法播放" + mUrl);
} catch (IOException e) {
Log.e(TAG, "IOException無法播放" + mUrl);
e.printStackTrace();
} catch (Exception e) {
Log.e(TAG, "Exception無法播放" + mUrl);
setErrPlayState("" + "播放失敗 " + e.toString());
}
}
public void destoryMediaPlayer() {
try {
if (mediaPlayer != null) {
mediaPlayer.setOnCompletionListener(null);
mediaPlayer.setOnPreparedListener(null);
mediaPlayer.reset();
mediaPlayer.release();
mediaPlayer = null;
}
} catch (Exception e) {
}
}