- Playing Media with Java Media Components
- Get the JMC Distribution
- Play Media with a Basic Media Player
- Tour the JMC Playback API
- Play Media with an Advanced Media Player
- Conclusion
Play Media with a Basic Media Player
The jmc.jar archive organizes its many classes into several packages. You only need to work with the com.sun.media.jmc.JMediaPlayer class, and then only with one of this class's constructors, if you want to create a basic media player that provides its own control panel. Listing 1 presents an example of a basic media player that's based on JMediaPlayer.
Listing 1 BMP.java
// BMP (Basic Media Player).java import java.awt.EventQueue; import java.net.URI; import javax.swing.JFrame; import com.sun.media.jmc.JMediaPlayer; public class BMP extends JFrame { public BMP (String mediaURI) { super ("BMP: "+mediaURI); setDefaultCloseOperation (EXIT_ON_CLOSE); JMediaPlayer mp = null; try { mp = new JMediaPlayer (new URI (mediaURI)); } catch (Exception e) { System.out.println ("Error opening media: "+e.toString ()); System.exit (1); } setContentPane (mp); pack (); setVisible (true); } public static void main (final String [] args) { if (args.length != 1) { System.err.println ("usage: java BMP mediaURI"); return; } Runnable r = new Runnable () { public void run () { new BMP (args [0]); } }; EventQueue.invokeLater (r); } }
BMP.java uses the public JMediaPlayer(URI uri) constructor to create a media player that plays media content identified by uri. If the content is unavailable, this constructor throws a com.sun.media.jmc.MediaUnavailableException object.
If the uniform resource identifier's syntax is bad, the java.net.URI constructor throws a java.net.URISyntaxException object.
Assuming that the current directory contains BMP.java and that JavaFX 1.0 SDK has been installed to the default directory on a Windows platform, the following command line compiles this file's source code:
javac -cp "c:\Program Files\JavaFX\javafx-sdk1.0\lib\desktop\jmc.jar" BMP.java
The following command line (split across multiple lines for readability) runs the resulting basic media player application, which presents a media window and a control panel of media player controls below this window:
java -cp "c:\Program Files\JavaFX\javafx-sdk1.0\lib\desktop\jmc.jar";. -Djava.library.path="c:\Program Files\JavaFX\javafx-sdk1.0\lib\desktop" BMP http://sun.edgeboss.net/download/sun/media/1460825906/1460825906_ 3864559001_09b01828-11-500.flv
Figure 1 shows a single frame of the Flash video that's being played.
Figure 1 Watching the JavaFX 1.0 launch video on the basic media player
The control panel presents various controls that, from left to right, let you restart the media, seek backward in the media, play/pause the media, seek forward in the media, seek to the end of the media, auto-repeat the media after it finishes playing, adjust the volume via the slider, and mute the audio.
I've found that seek-backward and seek-forward don't work properly, and seek-to-the-end isn't even implemented.