下面的代码是用于播放我的远程视频的:
Uri uri = Uri.parse(URLPath);
vv.setVideoURI(uri);
vv.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
//play next one
}
});
vv.setOnErrorListener(new OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
return false;
}
});它适用于我的大多数设备。
但它在某些设备上不起作用(比如三星Galaxy S2)。
我得到错误代码Error (200,-82)。
我发现它是MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK。这是什么意思?
如何避免呢?
发布于 2012-05-28 17:14:13
正如doc所说的,MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK:
视频是流式传输的,其容器对于渐进式回放无效,即视频的索引(例如moov atom)不在文件的开头。
在播放视频时,MediaPlayer经常会变成错误状态,然后提示“无法播放此视频”对话框,因此您必须在重置MediaPlayer引擎后,通过记住播放时间并重新播放视频来处理这些错误。
您可以在代码中实现OnErrorListener来处理此类错误,如下所示:
private MediaPlayer.OnErrorListener mOnErrorListener = new MediaPlayer.OnErrorListener() {
public boolean onError(MediaPlayer mp, int what, int extra) {
switch (what) {
case MediaPlayer.MEDIA_ERROR_SERVER_DIED:
Toast.makeText(PlayerActivity.this, "MEDIA_ERROR_SERVER_DIED",
Toast.LENGTH_SHORT).show();
return true;
case MediaPlayer.MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK:
Toast.makeText(PlayerActivity.this,
"MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK",
Toast.LENGTH_SHORT).show();
break;
case MediaPlayer.MEDIA_ERROR_UNKNOWN:
Toast.makeText(PlayerActivity.this, "MEDIA_ERROR_UNKNOWN",
Toast.LENGTH_SHORT).show();
break;
}
setProgressContainer(true, getString(R.string.msg_handle_error));
int position=mVideoView.getCurrentPosition();
if(position>0){
mCurPosition=position;
}
mVideoView.setVideoPath(mCurrentMediaUrl,position);
return true;
}
}; https://stackoverflow.com/questions/10782038
复制相似问题