Простой способ встраивания видео в мой графический интерфейс Swing - PullRequest
8 голосов
/ 29 июня 2011

Я давно искал простой способ вставить видео в мой Java Swing GUI.Я гоняюсь за ветром?В идеале я хотел бы иметь что-то вроде:

VideoPlayer video = new VideoPlayer("filename");
frame.getContentPane().add(video);
video.play();

Я ищу что-то, чего не существует?Я разрабатываю в основном для Linux, но с учетом Windows, как я мог бы попытаться сделать свое приложение кроссплатформенным в будущем.

Дополнительная информация:

  • Я смотрел на JMFдо и был недоволен количеством кода, необходимого для того, чтобы видео могло действительно отображаться и воспроизводиться.Я мог бы посетить его снова.
  • Я подумал о встроенном браузере, который будет воспроизводить видео с помощью VLC, но опять же не самая простая вещь.
  • Я полностью контролирую формат видеобыть сыграннымОни имеют фиксированный номер и при необходимости могут быть перекодированы.

Ответы [ 2 ]

7 голосов
/ 29 июня 2011

Я не знаю, почему вы думаете, что вам нужно много кода, чтобы использовать JMF.


    public class mediaPlayer extends JFrame
    {
        public mediaPlayer()
        {
            setLayout(new BorderLayout());

            //file you want to play
            URL mediaURL = //Whatever
            //create the media player with the media url
            Player mediaPlayer = Manager.createRealizedPlayer(mediaURL);
            //get components for video and playback controls
            Component video = mediaPlayer.getVisualComponent();
            Component controls = mediaPlayer.getControlPanelComponent();
            add(video,BorderLayout.CENTER);
            add(controls,BorderLayout.SOUTH);
        }
    }

Полный медиаплеер в 6 строк, возможно, он сделал бы это меньше. Если все, что вам нужно, это что-то простое, тогда идите с JMF.

Как упомянул Земзела, Xuggle также является хорошим решением, но потребует дополнительной работы.

Есть также привязки Java VLC. Нажмите здесь

3 голосов
/ 29 июня 2011

вы можете использовать xuggle . Это их сайт http://www.xuggle.com/. Я использую его для отображения AVI (DivX) и работает "отлично". JMF я немного медленнее в сравнении с xuggle. Проблема в Java заключается в том, что вы не можете точно синхронизировать каждый кадр в Windows, потому что Thread.sleep (30) не спит ровно 30 мс, а минимальная продолжительность ожидания в ОС Windows составляет 16 мс, поэтому вы не можете настроить его на быть примерно 30 мсек. На Linux должно работать более точно, я думаю, что минимальное время сна составляет 1 мсек.

...