Код ошибки (200, -82), MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK в Android

1

Ниже приведен код для воспроизведения удаленной видео моей:

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;
}
});

Он работает для большинства моих устройств.
Но это не работает на некоторых устройствах (таких как Samsung Galaxy S2).
Я получаю код Error (200,-82).
Я нашел, что это MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK. Что это значит?
И как этого избежать?

  • 0
    Что такое медиафайл? .mp4, .3gp?
Теги:
videoview

1 ответ

2
Лучший ответ

MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK, поскольку doc говорит:

Видео транслируется, и его контейнер недействителен для прогрессивного воспроизведения, т.е. Индекс видео (например, атом moov) не находится в начале файла.

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;
         }

}; 
  • 0
    Так это ошибка, которую нельзя избежать?
  • 0
    Другая проблема, эта ошибка вызвана различными устройствами или разными версиями Android?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню