Я экспериментирую с библиотекой vlcj , и у меня возникла проблема с настройками видео.Подробно, JVM аварийно завершает работу , когда видео заканчивается или останавливается без предварительного отключения настроек видео.
Как указано в документации, я включаю настройки видео после начала воспроизведения видео.После этого я могу без проблем изменять насыщенность, оттенок и другие параметры.
Я пытался отключить настройки видео, как только получаю события STOPPED или FINISHED, но это не решает проблему.
Я использую VLCj 4.1.0 и код для включения видеонастройка - это просто следующая строка.
this.mediaPlayerComponent.mediaPlayer().video().setAdjustVideo(true);
[ОБНОВЛЕНИЕ 1] :
Следующий код воспроизводит проблему.Когда видео заканчивается, происходит сбой.Обратите внимание, что если закомментирована последняя строка, сбой не произойдет.
import javax.swing.JFrame;
import uk.co.caprica.vlcj.player.component.EmbeddedMediaPlayerComponent;
public class SelfContainedMediaPlayer {
private final JFrame frame;
private static SelfContainedMediaPlayer selfContainedMediaPlayer;
private final EmbeddedMediaPlayerComponent mediaPlayerComponent;
public static void main(final String[] args) {
selfContainedMediaPlayer = new SelfContainedMediaPlayer();
}
public SelfContainedMediaPlayer(){
frame = new JFrame("My First Media Player");
frame.setBounds(100, 100, 1920, 1080);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
frame.setContentPane(mediaPlayerComponent);
frame.setVisible(true);
mediaPlayerComponent.mediaPlayer().media().play("path to video");
mediaPlayerComponent.mediaPlayer().video().setAdjustVideo(true);
}
}
Еще несколько подробностей о моей среде.
- Я использую Windows 10
- vlcj версия 4.1.0
- Установленная версия VLC 3.0.6 64bit
- версия java "11.0.1"
Есть предложения?Спасибо
[ОБНОВЛЕНИЕ 2]:
Я обнаружил проблему.
Как я и ожидал в одном из комментариев ниже, я тестировал vlcj-player приложение, которое я нашел здесь , и я заметил, что проблема с этим приложением отсутствует.
После некоторого копания я обнаружил, что JFrame
, содержащий видео, нуждается в TransferHandler
.Итак, я решил проблему, просто передав экземпляр TransferHandler
в кадр, как показано ниже.
frame.setTransferHandler(new CustomTransferHandler());
CustomTransferHandler
- это класс, расширяющий TransferHandler
.
К сожалению, я до сих пор не понимаю, почему это вызывает сбой JVM.