Android VideoView резюме и seekTo

Я воспроизводю видео, используя VideoView в своем приложении. По нажатию кнопки оно записывает текущую позицию видео, и приложение открывает браузер с некоторым URL-адресом. При нажатии кнопки «Назад» приложение возвращается к видеоприложению и возобновляет воспроизведение видео с того места, где оно было остановлено.

Я посмотрел на жизненный цикл активности Android и увидел, что метод onStart() вызывается, как только активность видео выходит на передний план. Итак, я создаю свой макет в onStart() и проигрываю видео, ища текущую позицию.

Моя проблема в том, что когда видео возобновляется, оно буферизуется с самого начала, а затем ищет. Поскольку он уже буферизировался в первый раз, есть ли способ снова устранить буферизацию при выполнении seekTo?

Спасибо Крис


person Chris    schedule 05.06.2010    source источник
comment
Попробуйте посмотреть, что я предлагаю в 7276825.   -  person Peter Tran    schedule 13.08.2012


Ответы (2)


У меня похожая проблема. У меня есть OnPreparedListener, который выполняет seekTo до начала. SeekTo работает, за исключением того, что есть аудио-глюк, который идет с самого начала видео, как будто оно начинает воспроизводиться, а затем ищет. Я не знаю, поможет ли мой код решить описанную проблему с буферизацией, но он может помочь ее осветить.

  mVideoView.setVisibility(View.VISIBLE);
  //get current window information, and set format, set it up differently, if you need some special effects
  getWindow().setFormat(PixelFormat.TRANSLUCENT);
  //mVideoView.setVideoURI(Uri.parse(path));
  mVideoView.setVideoPath(path);
  //get focus, before playing the video.
  mVideoView.requestFocus();
  mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
           public void onPrepared(MediaPlayer mp) {                         
           mVideoView.seekTo(mImageSeek);
           mVideoView.start();
        }
     });
person cdavidyoung    schedule 21.04.2011

Определите свой видеопросмотр ресурса, затем используйте этот код

videoview = (VideoView) findViewById(R.id.videoview_play);
videoview.setVideoPath(dir + videoName);
//get focus, before playing the video.
videoview.setMediaController(new MediaController(this));
videoview.requestFocus();
videoview.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                                       public void onPrepared(MediaPlayer mp){                         
                                         videoview.seekTo(5000);
                                         videoview.start();
                                       }
                                });

вы должны добавить .setMediaController(new MediaController(this)); и

videoview.requestFocus();

перед использованием PrepareListener

надеюсь, это поможет вам

person Mohamed Hussien    schedule 08.10.2013