错误代码(200,-82),媒体错误对于Android中的渐进式播放无效

错误代码(200,-82),媒体错误对于Android中的渐进式播放无效,android,android-videoview,Android,Android Videoview,下面的代码用于播放我的远程视频: 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() { @Ov

下面的代码用于播放我的远程视频:

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)。
我得到错误代码
错误(200,-82)

我发现它是
MEDIA\u ERROR\u NOT\u VALID\u用于渐进式播放
。 这是什么意思?
如何避免呢

正如博士所说:

视频是流式传输的,其容器对于渐进式传输无效 播放,即视频的索引(例如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;
         }

}; 

另一个问题,此错误是由不同的设备或不同的Android版本引起的?这是一种在收到此错误时执行操作并记录日志的好方法,但是,它不会在对话框出现之前捕获错误。不确定你是否能做到。媒体文件是什么。mp4、.3gp?