Есть ли способ обновить JFrame с медиа-компонентом vlcj? - PullRequest
0 голосов
/ 19 июня 2019

Я делаю две программы.

Одна - это программа на python 3, которая выполняет mjpg-streamer, а другая - Java-программу, которая воспроизводит видео, передаваемое в Интернет с помощью mjpg-streamer.

Программа Python 3 сделана в raspberry-pi 3 и передает видео через веб-камеру.

Я использую JFrame и vlcj для воспроизведения видео в java swing, и она хорошо работает.

Например, когда явыполнить mjpg-streamer с python 3 и затем щелкнуть JButton с java, JFrame показывает видео, получая видео с веб-адреса, а затем, если я остановлю mjpg-streamer, JFrame также прекратит показывать видео (показывает черный экран).

Но когда я снова запускаю mjpg-streamer после всего, что я сделал до сих пор, он больше не показывает видео ... Я должен закрыть JFrame и снова нажать JButton, чтобы посмотреть видео.

Я хочу сделатьJFrame показывает видео без закрытия JFrame и его повторного выполнения при выполнении mjpg-streamer после прекращения выполнения mjpg-streamer.

Поэтому я попытался обновить его с помощью mouselistener или keylllisterer но это не сработало.Я думаю, что EmbeddedMediaPlayerComponent занимает пространство каждого JFrame.

Надеюсь, вы, ребята, помогите мне.

Спасибо за чтение!

EXIT.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                EmbeddedMediaPlayerComponent component = new EmbeddedMediaPlayerComponent();

                final JFrame fs = new JFrame("Parking Lot 1");
                fs.setContentPane(component);
                fs.setBounds(100, 100, 800, 600);
                fs.setResizable(false);
                fs.setLocationRelativeTo(null);
                fs.addWindowListener(new WindowAdapter() {
                    public void windowClosing(WindowEvent e) {
                        component.release();
                        fs.setVisible(false);
                        fs.dispose();
                    }
                });
                fs.setVisible(true);
                component.mediaPlayer().media().play("http://IP:8090/?action=stream"); // sorry IP is my ip
            }
        });
...