Java tutorial
/* Java Media APIs: Cross-Platform Imaging, Media and Visualization Alejandro Terrazas Sams, Published November 2002, ISBN 0672320940 */ /******************************************************************************* * A "Bare Bones" Player Applet (BBP Applet) that will play the media object * indicated in the "media2Play" property of the Applet tag. * * <p> * The applet demonstrates the relative ease with which the JMF can be employed, * particularly for playing. The applet a minimal player, placing the controls * for the player and the visual component for the played object within the * Applet. The object plays once, but can be controlled by the user through the * control panel provided. * * <p> * The tag for the Applet should look something like: * * <!-- Sample HTML <applet code="BBPApplet.class" width=300 height=400> <param * name="media2Play" value="myVideo.mpg"> </applet> --> * * @author Spike Barlow ******************************************************************************/ import java.applet.*; import java.awt.*; import java.awt.event.*; import java.net.*; import java.io.*; import java.util.*; import javax.media.*; import javax.media.control.*; public class ControlQueryPApplet extends Applet implements ControllerListener { /*************************************************************************** * Object to play the media. Only attribute that the Applet really needs. **************************************************************************/ protected Player player; /*************************************************************************** * The name of the media to be played. **************************************************************************/ protected String nameOfMedia2Play; /*************************************************************************** * Name of the Property field within the applet tage indicating the name of * the media to play. **************************************************************************/ private static final String MEDIA_NAME_PROPERTY = "media2Play"; /*************************************************************************** * Object describing the location of the media to be played. **************************************************************************/ protected MediaLocator locator; protected SystemTimeBase timer; /*************************************************************************** * Initialise the applet by attempting to create and start a Player object * capable of playing the media specified in the applet tag. **************************************************************************/ public void init() { setLayout(new BorderLayout()); setBackground(Color.lightGray); try { nameOfMedia2Play = (new URL(getDocumentBase(), getParameter(MEDIA_NAME_PROPERTY))).toExternalForm(); locator = new MediaLocator(nameOfMedia2Play); Manager.setHint(Manager.PLUGIN_PLAYER, new Boolean(true)); player = Manager.createPlayer(locator); player.addControllerListener(this); timer = new SystemTimeBase(); player.start(); } catch (Exception e) { throw new Error("Couldn't initialise BBPApplet: " + e.getMessage()); } } /*************************************************************************** * Respond to ControllerEvents from the Player that was created. For the * bare bones player the only event of import is the RealizeCompleteEvent. * At that stage the visual component and controller for the Player can * finally be obtained and thus displayed. **************************************************************************/ public synchronized void controllerUpdate(ControllerEvent e) { if (e instanceof RealizeCompleteEvent) { Control[] allControls = player.getControls(); System.out.println("" + allControls.length + " controls for a Player @ REALIZED:"); for (int i = 0; i < allControls.length; i++) System.out.println("" + (i + 1) + ": " + allControls[i]); add(player.getVisualComponent(), "North"); add(player.getControlPanelComponent(), "South"); validate(); } else if (e instanceof StartEvent) { Control[] allControls = player.getControls(); System.out.println("" + allControls.length + " controls for a Player @ START:"); Panel panel = new Panel(); for (int i = 0; i < allControls.length; i++) { System.out.println("" + (i + 1) + ": " + allControls[i]); Component cont = allControls[i].getControlComponent(); if (cont != null) { System.out.println("Has a graphical component"); panel.add(cont); } } panel.validate(); add(panel, "Center"); validate(); FrameGrabbingControl frameControl = (FrameGrabbingControl) player .getControl("javax.media.control.FrameGrabbingControl"); if (frameControl == null) System.out.println("Unable to obtain FrameRateControl"); else { System.out.println("Have Frame Rate control"); panel.add(frameControl.getControlComponent()); panel.validate(); } } } }