Search code examples
javalinuxswingmedia-player

A simple way of embedding a video in my Swing GUI


I've been looking for a while now for a dead simple way of embedding a video into my Java Swing GUI. Am I chasing after the wind? Ideally, I would love to have something like:

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

Am I searching for something that doesn't exist? I've developing mainly for linux but with windows in mind as I might try and make my application cross platform in the future.

Addtional information:

  • I've looked at JMF before and was unpleased at the amount of code needed before a video could actually be displayed and played. I might visit it again.
  • I thought of an embedded browser that would play a video using VLC, but again not the easiest thing ever.
  • I have complete control on the format of the videos to be played. They are fixed in number and can be recoded if needed.

Solution

  • I dont know why you think you need a lot of code to use 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);
        }
    }
    

    A complete media player in like 6 lines, prob could have done it in less. If all you need is something basic, then id go with JMF.

    As Zemzela mentioned, Xuggle is also a good solution but will require more work.

    There are also Java bindings VLC. Click Here