Custom Player GUI

JMF Solutions

Problem

How to create custom controls using the Player API. You have created an application that embeds a JMF player. You'd like the JMF GUI to look like the rest of your application. You don't want to use the default control panel provided by JMF either because it clashes with your GUI design or because it has more/less functionality than you would like to expose to the user.

Solution

You can create your own GUI components and use them to control the JMF player. The typical VCR type controls such as start, stop and rewind can be implemented through the Player interface.

The playback volume can be controlled through the GainControl object exposed through the Player.getControls() method. The GainControl.setLevel() takes a value between 0.0 and 1.0. This example draws a rectangle on the control panel and translates mouse clicks within the box to a value between 0.0 and 1.0 and accordingly sets the volume of the player.

The seeking function can be implemented by making calls to Player.setMediaTime(). The bounds of the media time are not 0 to 1 as in the case of the volume level. The upper limit is the duration of the player retrieved through Player.getDuration(). The lower limit is 0. So the position of the mouse in the media time rectangle in the GUI is translated to a nanosecond position between 0 and duration.

Requirements

Platform: JDK 1.1.6 or later
JMF API: 1.0 or later
Implementation: AJ, WPP, SPP *

* AJ = All Java, WPP = Windows Performance Pack, SPP = Solaris Performance Pack

Related Classes

  • javax.media.Player
  • javax.media.GainControl

How to run this sample

  1. Download the jamp.zip file and set the CLASSPATH to point to it.
  2. Run jamp.Main with an optional URL in the command line
  3. For example,

    java jamp.Main file:/C:/test.mpg

Source Code

  • jamp.zip [contains source and build]