Spec-Zone .ru
спецификации, руководства, описания, API
Java FX 2.0

Package javafx.scene.media

Provides the set of classes for integrating audio and video into Java FX Applications.

See: Description

Package javafx.scene.media Description

Provides the set of classes for integrating audio and video into Java FX Applications. The primary use for this package is media playback. There are three principal classes in the media package: Media, MediaPlayer, and MediaView.

Contents

  1. Supported Media Types
  2. Supported Protocols
  3. Supported Metadata Tags
  4. Playing Media in Java FX

Supported Media Types

Java FX supports a number of different media types. A media type is considered to be the combination of a container format and one or more encodings. In some cases the container format might simply be an elementary stream containing the encoded data.

Supported Encoding Types

An encoding type specifies how sampled audio or video data are stored. Usually the encoding type implies a particular compression algorithm. The following table indicates the encoding types supported by Java FX Media.

EncodingTypeDescription
MP3Audio Raw MPEG-1, 2, and 2.5 audio; layers I, II, and III; all supported combinations of sampling frequencies and bit rates.
PCMAudioUncompressed, raw audio samples
VP6VideoOn2 VP6 video compression

Supported Container Types

A container type specifies the file format used to store the encoded audio, video, and other media data. Each container type is associated with one or more MIME types, file extensions, and file signatures (the initial bytes in the file). The following table indicates the combination of container and encoding types supported by Java FX Media.

ContainerDescriptionVideo Encoding Audio EncodingMIME TypeFile Extension
AIFFAudio Interchange File FormatN/A PCMaudio/x-aiff.aif, .aiff
FXM, FLVFX Media, Flash VideoVP6 MP3video/x-javafx.fxm, .flv
MP3MPEG-1, 2, 2.5 raw audio stream possibly with ID3 metadata v2.3 or v2.4 N/AMP3audio/mpeg.mp3
WAVWaveform Audio FormatN/A PCMaudio/x-wav.wav

Supported Protocols

ProtocolDescriptionReference
FILE Protocol for URI representation of local files java.net.URI
HTTP Hypertext transfer protocol for representation of remote files java.net.URI
JAR Representation of media entries in files accessible via the FILE or HTTP protocols java.net.JarURLConnection

Supported Metadata Tags

A media container may also include certain metadata which describe the media in the file. The Java FX Media API makes the metadata available via the
Media.getMetadata() method. The keys in this mapping are referred to as tags with the tags supported by Java FX Media listed in the following table. Note that which tags are available for a given media source depend on the metadata actually stored in that source, i.e., not all tags are guaranteed to be available.

Container Tag (type String) Type Description
FXM, FLV audio codec java.lang.String The encoder used for the audio track.
FXM, FLV duration javafx.util.Duration The duration of the media.
FXM, FLV video codec java.lang.String The encoder used for the video track.
FXM, FLV width java.lang.Integer The width in pixels of the video track.
FXM, FLV height java.lang.Integer The height in pixels of the video track.
FXM, FLV framerate java.lang.Double The video frame rate in frames per second.
FXM, FLV creationdate java.lang.String The date when the video was created.
MP3 album artist java.lang.String The artist for the overall album, possibly "Various Artists" for compilations.
MP3 album java.lang.String The name of the album.
MP3 artist java.lang.String The artist of the track.
MP3 comment-N java.lang.String A comment where N is a 0-relative index. Comment format: ContentDescription[lng]=Comment
MP3 composer java.lang.String The composer of the track.
MP3 year java.lang.Integer The year the track was recorded.
MP3 disc count java.lang.Integer The number of discs in the album.
MP3 disc number java.lang.Integer The 1-relative index of the disc on which this track appears.
MP3 duration javafx.util.Duration The duration of the track.
MP3 genre java.lang.String The genre of the track, for example, "Classical," "Darkwave," or "Jazz."
MP3 image javafx.scene.image.Image The album cover.
MP3 title java.lang.String The name of the track.
MP3 track count java.lang.Integer The number of tracks on the album.
MP3 track number java.lang.Integer The 1-relative index of this track on the disc.

Playing Media in Java FX

Basic Playback

The basic steps required to play media in Java FX are:

  1. Create a Media object for the desired media source.
  2. Create a MediaPlayer object from the Media object.
  3. Create a MediaView object.
  4. Add the MediaPlayer to the MediaView.
  5. Add the MediaView to the scene graph.
  6. Invoke MediaPlayer.play().
The foregoing steps are illustrated by the sample code in the MediaView class documentation. Some things which should be noted are:

Error Handling

Errors using Java FX Media may be either synchronous or asynchronous. In general synchronous errors will manifest themselves as a Java Exception and asynchronous errors will cause a Java FX property to be set. In the latter case either the error property may be observed directly, an onError callback registered, or possibly both.

The main sources of synchronous errors are Media() and MediaPlayer(). The asynchronous error properties are Media.error and MediaPlayer.error, and the asynchronous error callbacks Media.onError, MediaPlayer.onError, and MediaView.onError.

Some errors might be duplicated. For example, a MediaPlayer will propagate an error that it encounters to its associated Media, and a MediaPlayer to all its associated MediaViews. As a consequence, it is possible to receive multiple notifications of the occurrence of a given error, depending on which properties are monitored.

The following code snippet illustrates error handling with media:

    String source;
    Media media;
    MediaPlayer mediaPlayer;
    MediaView mediaView;
    try {
        media = new Media(source);
        if (media.getError() == null) {
            media.setOnError(new Runnable() {
                public void run() {
                    // Handle asynchronous error in Media object.
                }
            });
            try {
                mediaPlayer = new MediaPlayer(media);
                if (mediaPlayer.getError() == null) {
                    mediaPlayer.setOnError(new Runnable() {
                        public void run() {
                            // Handle asynchronous error in MediaPlayer object.
                        }
                    });
                    mediaView = new MediaView(mediaPlayer);
                    mediaView.setOnError(new EventHandler() {
                        public void handle(MediaErrorEvent t) {
                            // Handle asynchronous error in MediaView.
                        }
                    });
                } else {
                    // Handle synchronous error creating MediaPlayer.
                }
            } catch (Exception mediaPlayerException) {
                // Handle exception in MediaPlayer constructor.
            }
        } else {
            // Handle synchronous error creating Media.
        }
    } catch (Exception mediaException) {
        // Handle exception in Media constructor.
    }

Java FX 2.0

Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms.