Я использую компонент VideoView для воспроизведения видео. Кажется, я не могу очистить дисплей VideoView после того, как я вручную вызову stopPlayback(). Я хотел бы сбросить VideoView, чтобы исходный фон был виден.Android VideoView ясный дисплей после stopPlayback()
- Воспроизведение видео в компоненте VideoView.
- Выберите новое видео, чтобы играть.
- VideoView застревает в последнем кадре первого видео до следующего запуска видео. Если при следующем видео есть ошибка, статическое изображение с первого видео остается там.
- Если я разрешаю воспроизведению видео до состояния завершения, дисплей очищается.
код я использую:
private VideoView videoViewer = null;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
...
if (videoViewer != null) {
videoViewer.setOnPreparedListener(new OnPreparedListener());
}
...
}
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (videoViewer != null) {
videoViewer.stopPlayback();
videoViewer.setVideoURI(Uri.parse("http://my_vido_url/playlist.m3u8"));
}
}
private class OnPreparedListener implements MediaPlayer.OnPreparedListener {
@Override
public void onPrepared(MediaPlayer mp) {
videoViewer.start();
}
}
Обратите внимание, что на основе источника VideoView.java, stopPlayback() выполняет следующие действия на подстилающей MediaPlayer:
public void stopPlayback() {
if (mMediaPlayer != null) {
mMediaPlayer.stop();
mMediaPlayer.release();
mMediaPlayer = null;
}
}
Когда Я делаю это, следующее воспроизведение по-прежнему показывает последний кадр предыдущего. Любые идеи относительно того, почему это происходит? – slhck
Фактическая видеокадра рисуется на поверхности «снизу» VideoView. Установка фона в VideoView скроет фрейм, но не удалит его.Когда фон очищается, старый кадр все еще присутствует. – William