У меня есть прослушиватель действий на медиаплеере с использованием vlcj. Когда я запускаю программу в режиме отладки, прослушиватель действий запускается, когда видео завершено, но когда я запускаю его обычно в затмении, он не запускается.Экстренный прослушиватель работает только в режиме отладки
Мои действия слушателем
public static void youtubeGui(){
Main.playing = true;
final JFrame f = new JFrame();
f.setLocation(100,100);
f.setSize(1000,600);
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setVisible(true);
Canvas c = new Canvas();
c.setBackground(Color.black);
JPanel p = new JPanel();
p.setLayout(new BorderLayout());
p.add(c);
f.add(p);
NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(),"C:\\Program Files\\VideoLAN\\VLC");
Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
MediaPlayerFactory mpf = new MediaPlayerFactory();
EmbeddedMediaPlayer emp = mpf.newEmbeddedMediaPlayer(new Win32FullScreenStrategy(f));
emp.setVideoSurface(mpf.newVideoSurface(c));
emp.setPlaySubItems(true);
String str = Insert.videoQueue.peek();
emp.prepareMedia(str);
emp.play();
Main.playing = true;
try {
TimeUnit.SECONDS.sleep(4);
} catch (InterruptedException e) {
e.printStackTrace();
}
emp.addMediaPlayerEventListener(new MediaPlayerEventAdapter() {
@Override
public void finished(MediaPlayer mediaPlayer) {
Insert.videoQueue.remove();
System.out.println("aaaaa");
f.setVisible(false);
f.dispose();
Main.playing = false;
}
});
}
Проверка нового метода вставки
public static void addCheck(String locationIn) throws IOException {
String fileLine = "";
String a = "";
while (true) {
Scanner inFile = new Scanner(new FileReader(
locationIn));
while (inFile.hasNext()) {
fileLine = inFile.nextLine();
}
if (fileLine.contains("watch?v=") && fileLine.contains("!add") && !fileLine.equals(a)) {
a = fileLine;
String result = fileLine.substring(fileLine.indexOf("[URL]") + 5, fileLine.indexOf("[/URL]"));
videoQueue.add(result);
result = "";
if(Main.playing == false){
Gui.youtubeGui();
}
}
inFile.close();
}
}
Я предполагаю, что у вас есть проблема с потоковой загрузкой графического интерфейса, что вы являетесь графическим интерфейсом, который блокируется из-за долгого кода, который выполняется в потоке событий GUI, но я буду проклят, если смогу доказать это как Я не совсем понимаю ваш код. Пожалуйста, подумайте о создании и публикации действительного [mcve]. –
Кроме того, если вы форматируете свой код лучше, чтобы он соответствовал стандартам Java, всем нам было бы легче понять и прочитать. –
Я отформатировал ваш код для удобочитаемости, но в будущем я настоятельно рекомендую вам сделать это самостоятельно, особенно, указав правильные отступы вашего кода, обычно 4 пробела на блок, и убедитесь, что весь код в том же блоке находится на одинаковый уровень отступов. Форматирование очень важно, потому что, если ваш код не находится в стандартном принятом формате, он не читается, и если он не читается, его трудно отлаживать и понимать. –