com.trolltech.qt.phonon
Class MediaObject

java.lang.Object
  extended by com.trolltech.qt.internal.QSignalEmitterInternal
      extended by com.trolltech.qt.QSignalEmitter
          extended by com.trolltech.qt.QtJambiObject
              extended by com.trolltech.qt.core.QObject
                  extended by com.trolltech.qt.phonon.MediaObject
All Implemented Interfaces:
QtJambiInterface

public class MediaObject
extends QObject

The MediaObject class provides an interface for media playback. The media object manages a MediaSource, which supplies the media object with multimedia content, e.g., from a file. A playback in Phonon is always started by calling the play() function.

The state of play (play, pause, stop, seek) is controlled by the media object, and you can also query the current state(). It keeps track of the playback position in the media stream, and emits the tick() signal when the current position in the stream changes.

Notice that most functions of this class are asynchronous, so you cannot rely on that a state is entered after a function call before you receive the stateChanged() signal. The description of the State enum gives a description of the different states.

Before play() is called, the media object should be connected to output nodes, which outputs the media to the underlying hardware. The output nodes required are dependent on the contents of the multimedia file that is played back. Phonon has currently two output nodes: the AudioOutput for audio content and VideoWidget for video content. If a MediaSource contains both audio and video, both nodes need to be connected to the media object.

    Phonon::MediaObject *mediaObject = new Phonon::MediaObject(this);

    Phonon::VideoWidget *videoWidget = new Phonon::VideoWidget(this);
    Phonon::createPath(mediaObject, videoWidget);

    Phonon::AudioOutput *audioOutput =
        new Phonon::AudioOutput(Phonon::VideoCategory, this);
    Phonon::createPath(mediaObject, audioOutput);

    mediaObject->play();
The media object can queue sources for playback. When it has finished to play one source, it will start playing the next in the queue; the new source is then removed from the queue. The queue can be altered at any time.
media->setCurrentSource(":/sounds/startsound.ogg");
media->enqueue("/home/username/music/song.mp3");
media->enqueue(":/sounds/endsound.ogg");
You can also make use of the aboutToFinish() signal, which is guaranteed to be emitted in time for altering the queue.
  media->setCurrentSource(":/sounds/startsound.ogg");
  connect(media, SIGNAL(aboutToFinish()), SLOT(enqueueNextSource()));
}

void enqueueNextSource()
{
  media->enqueue("/home/username/music/song.mp3");
}
When playback is finishing, i.e., when a media source has been played to the end and the queue is empty, several signals are emitted. First, the media object will emit aboutToFinish() - shortly before the playback has finished - and then finished() . The stateChanged() signal will also be emitted with PausedState , which is the state the media object takes when the playback is finished. If you wish to enter another state, you can connect a slot to finished() and set a new state there.

The media object resolves the meta information, such as title, artist, and album. The meta data is not resolved immediately after a new source is provided, but will be resolved before the object leaves the LoadingState . The data is queried by string keys - which should follow the Ogg Vorbis specification http://xiph.org/vorbis/doc/v-comment.html - or by using the MetaData enum. The data available will depend on the type and content of the individual media files. metaDataChanged() will be emitted when the media object has resolved new meta data.

Errors encountered during playback and loading of media sources are reported by emitting a state changed signal with ErrorState . The severity of the error can be queried by the ErrorType . With a NormalError , it might be possible to continue the playback, for instance, if only audio playback fails for a media source which also has video. A FatalError indicates that Phonon cannot continue playback of the current source, but it is possible to try with a different one. A user readable error message is given by errorString().

See also:
Phonon::MediaSource, Phonon::AudioOutput, VideoWidget, Music Player Example, Phonon Overview, Phonon::VideoPlayer, Phonon::createPlayer(), and Phonon Module.


Nested Class Summary
 
Nested classes/interfaces inherited from class com.trolltech.qt.QSignalEmitter
QSignalEmitter.AbstractSignal, QSignalEmitter.Signal0, QSignalEmitter.Signal1, QSignalEmitter.Signal2, QSignalEmitter.Signal3, QSignalEmitter.Signal4, QSignalEmitter.Signal5, QSignalEmitter.Signal6, QSignalEmitter.Signal7, QSignalEmitter.Signal8, QSignalEmitter.Signal9
 
Nested classes/interfaces inherited from class com.trolltech.qt.internal.QSignalEmitterInternal
com.trolltech.qt.internal.QSignalEmitterInternal.AbstractSignalInternal
 
Field Summary
 QSignalEmitter.Signal0 aboutToFinish
          Emitted before the playback of the whole queue ends.
 QSignalEmitter.Signal1 bufferStatus
          This signal takes 1 generic argument(s).
 QSignalEmitter.Signal1 currentSourceChanged
          This signal takes 1 generic argument(s).
 QSignalEmitter.Signal0 finished
          Emitted when the object has finished playback.
 QSignalEmitter.Signal1 hasVideoChanged
          This signal takes 1 generic argument(s).
 QSignalEmitter.Signal0 metaDataChanged
          This signal is emitted when the media object has resolved new meta data.
 QSignalEmitter.Signal1 prefinishMarkReached
          This signal takes 1 generic argument(s).
 QSignalEmitter.Signal1 seekableChanged
          This signal takes 1 generic argument(s).
 QSignalEmitter.Signal2 stateChanged
          This signal takes 2 generic argument(s).
 QSignalEmitter.Signal1 tick
          This signal takes 1 generic argument(s).
 QSignalEmitter.Signal1 totalTimeChanged
          This signal takes 1 generic argument(s).
 
Fields inherited from class com.trolltech.qt.internal.QSignalEmitterInternal
currentSender
 
Method Summary
 void clearQueue()
          Clears the queue of media sources.
 MediaSource currentSource()
          Returns the current media source, i.
 long currentTime()
          Returns the current time (in milliseconds), i.
 void enqueue(java.util.List sources)
          Appends multiple sources to the queue.
 void enqueue(MediaSource source)
          Appends source to the queue.
 void enqueueUrls(java.util.List urls)
          Appends the URLs in urls to the media source queue.
 java.lang.String errorString()
          Returns a human-readable description of the last error that occurred.
 Phonon.ErrorType errorType()
          Tells your program what to do about the last error that occurred.
 boolean hasVideo()
          Check whether the current media source includes a video stream.
 java.util.List inputPaths()
          Returns the paths that inputs multimedia to this media node.
 boolean isSeekable()
          Check whether it is possible to seek, i.
 boolean isValid()
          Returns true if the backend provides an implementation of this class; otherwise returns false.
 java.util.SortedMap metaData()
          Returns all meta data in a multi map.
 java.util.List metaData(Phonon.MetaData key)
          Returns the strings associated with the given key.
 java.util.List metaData(java.lang.String key)
          Returns the strings associated with the given key.
 java.util.List outputPaths()
          Returns the paths to which this media node outputs media.
 void pause()
          Requests playback to pause, and the media object to enter the PausedState .
 void play()
          Requests playback of the media data to start.
 int prefinishMark()
          This property holds the time when the prefinishMarkReached signal is emitted before playback ends.
 java.util.List queue()
          Returns the queued media sources.
 long remainingTime()
          Get the remaining time (in milliseconds) of the file currently being played.
 void seek(long time)
          Requests a seek to the time indicated, specified in milliseconds.
 void setCurrentSource(MediaSource source)
          Set the media source the MediaObject should use.
 void setPrefinishMark(int msecToEnd)
          This property holds the time when the prefinishMarkReached signal is emitted before playback ends.
 void setQueue(java.util.List sources)
          Set the sources to play when the current source has finished.
 void setQueueToUrls(java.util.List urls)
          Set the urls to play when the current media has finished.
 void setTickInterval(int newTickInterval)
          This property holds The time interval in milliseconds between two ticks.
 void setTransitionTime(int msec)
          This property Defines the time between playback of two media sources in the media queue.
 Phonon.State state()
          Returns the current Phonon::State of the object.
 void stop()
          Requests playback to stop, and the media object to enter the StoppedState .
 int tickInterval()
          This property holds The time interval in milliseconds between two ticks.
 long totalTime()
          Get the total time (in milliseconds) of the file currently being played.
 int transitionTime()
          This property Defines the time between playback of two media sources in the media queue.
 
Methods inherited from class com.trolltech.qt.core.QObject
childEvent, children, connectSlotsByName, customEvent, disposeLater, dumpObjectInfo, dumpObjectTree, dynamicPropertyNames, event, eventFilter, findChild, findChild, findChild, findChildren, findChildren, findChildren, findChildren, indexOfProperty, installEventFilter, isWidgetType, killTimer, moveToThread, objectName, parent, properties, property, removeEventFilter, setObjectName, setParent, setProperty, startTimer, timerEvent, toString, userProperty
 
Methods inherited from class com.trolltech.qt.QtJambiObject
dispose, disposed, equals, finalize, reassignNativeResources, tr, tr, tr
 
Methods inherited from class com.trolltech.qt.QSignalEmitter
blockSignals, disconnect, disconnect, signalsBlocked, signalSender, thread
 
Methods inherited from class com.trolltech.qt.internal.QSignalEmitterInternal
__qt_signalInitialization
 
Methods inherited from class java.lang.Object
clone, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface com.trolltech.qt.QtJambiInterface
disableGarbageCollection, nativeId, nativePointer, reenableGarbageCollection, setJavaOwnership
 

Field Detail

aboutToFinish

public final QSignalEmitter.Signal0 aboutToFinish
Emitted before the playback of the whole queue ends. When this signal is emitted you still have time to enqueue() a new MediaSource, so that playback continues.

If you need a signal to be emitted at a specific time before playback is finished, you should use the prefinishMarkReached() signal instead.

See also:
enqueue(), prefinishMark, and prefinishMarkReached() .


bufferStatus

public final QSignalEmitter.Signal1 bufferStatus

This signal takes 1 generic argument(s). We list their type and the name they go by in the description of this signal. <java.lang.Integer(named: percentFilled)>:

Provides information about the status of the buffer.

When a MediaObject is in the BufferingState , it will send this signal regularly. percentFilled is a number between 0 and 100 telling you how much the buffer is filled.

You can use this signal to show a progress bar to the user when in BufferingState :

progressBar->setRange(0, 100); // this is the default
connect(media, SIGNAL(bufferStatus(int)), progressBar, SLOT(setValue(int)));
Note that the BufferingSate is commonly used when waiting for data over a network connection, but this might not be true for all backends.


currentSourceChanged

public final QSignalEmitter.Signal1 currentSourceChanged

This signal takes 1 generic argument(s). We list their type and the name they go by in the description of this signal. <com.trolltech.qt.phonon.MediaSource(named: newSource)>:

Emitted when the MediaObject fetches a new MediaSource from the queue() and before it enters the LoadingState for the new source. The media object will take a new source from the queue() when it has finished the playback of the current source.

newSource is the source that starts to play at the time the signal is emitted.


finished

public final QSignalEmitter.Signal0 finished
Emitted when the object has finished playback. It is not emitted if you call stop(), pause() or load(). It is emitted only when the current media source has finished playing and the media queue() is empty, or when a fatal error occurs.

Warning: This signal is not emitted when the current source has finished and there's another source in the queue. It is only emitted when the queue is empty.

See also:
currentSourceChanged() , aboutToFinish() , and prefinishMarkReached() .


hasVideoChanged

public final QSignalEmitter.Signal1 hasVideoChanged

This signal takes 1 generic argument(s). We list their type and the name they go by in the description of this signal. <java.lang.Boolean(named: hasVideo)>:

Emitted whenever the return value of hasVideo() changes, i.e., the media source being played back contains video.

Normally you'll check hasVideo() first and then let this signal tell you whether video is available now or not. That way you don't have to poll hasVideo().

hasVideo is true when the stream contains video and adding a VideoWidget will show a video, and false if there is no video data in the stream and adding a VideoWidget will show an empty (black) VideoWidget.


metaDataChanged

public final QSignalEmitter.Signal0 metaDataChanged
This signal is emitted when the media object has resolved new meta data. This will happen before the media object leaves the LoadingState after a new source has been set.

This signal is not emitted when the media object removes the current data, i.e., when a new source is set or an error has occurred. If you need to know this, you can listen for the ErrorState , and connect to the currentSourceChanged() signal.

You can get the new meta data with the metaData methods.

See also:
metaData(), currentSourceChanged() , stateChanged() , and Phonon::State .


prefinishMarkReached

public final QSignalEmitter.Signal1 prefinishMarkReached

This signal takes 1 generic argument(s). We list their type and the name they go by in the description of this signal. <java.lang.Integer(named: msecToEnd)>:

Emitted when there are only msecToEnd milliseconds left of playback.

Warning: This signal is not emitted when there is another source in the queue. It is only emitted when the queue is empty.

See also:
setPrefinishMark(), prefinishMark(), aboutToFinish() , and finished() .


seekableChanged

public final QSignalEmitter.Signal1 seekableChanged

This signal takes 1 generic argument(s). We list their type and the name they go by in the description of this signal. <java.lang.Boolean(named: isSeekable)>:

This signal is emitted when the media object's ability to seek in the media stream changes. isSeekable is true if it is possible to seek(); otherwise, it is false.

Change in the ability to seek in the stream usually happens when the current source changes or when an error occurs.

Normally you'll check isSeekable() after setting a new media source, and then let this signal tell you when seeking is possible. That way you don't have to poll isSeekable().


stateChanged

public final QSignalEmitter.Signal2 stateChanged

This signal takes 2 generic argument(s). We list their type and the name they go by in the description of this signal. <com.trolltech.qt.phonon.Phonon$State(named: newstate), com.trolltech.qt.phonon.Phonon$State(named: oldstate)>:

This signal is emitted when the state of the MediaObject has changed. The oldstate and newstate parameters indicate the previous state and current state of the media object.

If you are only interested in the new state of the media object, you can connect this signal to a slot that accepts only one State argument.


tick

public final QSignalEmitter.Signal1 tick

This signal takes 1 generic argument(s). We list their type and the name they go by in the description of this signal. <java.lang.Long(named: time)>:

This signal is emitted in intervals defined by the tickInterval property. The current position of the media object in the stream is given by the time parameter. The time is specified in milliseconds.

See also:
tickInterval.


totalTimeChanged

public final QSignalEmitter.Signal1 totalTimeChanged

This signal takes 1 generic argument(s). We list their type and the name they go by in the description of this signal. <java.lang.Long(named: newTotalTime)>:

This signal is emitted as soon as the total time of the media file is known or has changed. For most non-local media data the total time of the media can only be known after some time. At that time the totalTime function can not return useful information. You have to wait for this signal to know the real total time.

newTotalTime is the length of the media file in milliseconds.

See also:
totalTime().

Method Detail

clearQueue

public final void clearQueue()
Clears the queue of media sources.

See also:
queue(), and enqueue().


currentSource

public final MediaSource currentSource()
Returns the current media source, i. ., the media source that is being played back. The current source is either set with setCurrentSource() or taken from the media queue() when a media source has finished playing.

See also:
setCurrentSource().


currentTime

public final long currentTime()
Returns the current time (in milliseconds), i. ., position in the media stream, of the file currently being played.

See also:
tick() , totalTime(), and remainingTime().


enqueue

public final void enqueue(MediaSource source)
Appends source to the queue.

You can use this function to provide the next source after the aboutToFinish() signal has been emitted.

See also:
aboutToFinish() , setQueue(), and clearQueue().


enqueue

public final void enqueue(java.util.List sources)
Appends multiple sources to the queue.

See also:
setQueue(), and clearQueue().


enqueueUrls

public final void enqueueUrls(java.util.List urls)
Appends the URLs in urls to the media source queue.

The function will create MediaSources from the QUrls, and append these to the queue.

See also:
setQueue(), and clearQueue().


errorString

public final java.lang.String errorString()
Returns a human-readable description of the last error that occurred. The strings given may vary between backends.

The error description can be used to give a message to the user - and the developer - when the stateChanged() signal is emitted with ErrorState .

Qt Backends

On Windows, Qt fetches its error messages from the DirectShow backend. This usually includes an error number, which can be looked up in the DirectShow documentation: http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/dx81_c/directx_cpp/htm/errorandsuccesscodes.asp.

On Linux and Mac, the error strings are not fetched directly from the backend, but are created in the backend.

See also:
Phonon::ErrorState , and stateChanged() .


errorType

public final Phonon.ErrorType errorType()
Tells your program what to do about the last error that occurred. Use this function after receiving a stateChanged() signal with ErrorState .

See also:
Phonon::ErrorType , Phonon::ErrorState , and stateChanged() .


hasVideo

public final boolean hasVideo()
Check whether the current media source includes a video stream.

Warning: This information is not resolved immediately after a media object gets a new source. Listen to the hasVideoChanged() signal instead.

  connect(media, SIGNAL(hasVideoChanged(bool)), hasVideoChanged(bool));
  media->setCurrentSource("somevideo.avi");
  media->hasVideo(); // returns false;
}

void hasVideoChanged(bool b)
{
  // b == true
  media->hasVideo(); // returns true;
}
Returns true if the media contains video data; otherwise, returns false.

See also:
hasVideoChanged() .


inputPaths

public final java.util.List inputPaths()
Returns the paths that inputs multimedia to this media node.

See also:
outputPaths().


isSeekable

public final boolean isSeekable()
Check whether it is possible to seek, i. ., change the playback position in the media stream.

Warning: This information is not solved immediately after the media object gets a new media source. The hasVideoChanged() signal is emitted after this information is available.

  connect(media, SIGNAL(hasVideoChanged(bool)), hasVideoChanged(bool));
  media->setCurrentSource("somevideo.avi");
  media->hasVideo(); // returns false;
}

void hasVideoChanged(bool b)
{
  // b == true
  media->hasVideo(); // returns true;
}
Returns true if the current media may be seeked; otherwise, returns false.

See also:
seekableChanged() .


isValid

public final boolean isValid()
Returns true if the backend provides an implementation of this class; otherwise returns false.

This does not guarantee that instances of the class works as expected, but that the backend has implemented the functionality for this class. For instance, Qt's GStreamer backend will return true for instances of the AudioOutput class, even if there is a problem with GStreamer and it could not play sound.


metaData

public final java.util.SortedMap metaData()
Returns all meta data in a multi map.

See also:
metaDataChanged() .


metaData

public final java.util.List metaData(Phonon.MetaData key)
Returns the strings associated with the given key.

Same as above except that the keys are defined in the Phonon::MetaData enum.

See also:
metaDataChanged() .


metaData

public final java.util.List metaData(java.lang.String key)
Returns the strings associated with the given key.

Backends should use the keys specified in the Ogg Vorbis documentation: http://xiph.org/vorbis/doc/v-comment.html

Therefore the following should work with every backend:

Note that meta data is not resolved before the metaDataChanged() signal is emitted.

A typical usage looks like this:

setMetaArtist (media->metaData("ARTIST"     ));
setMetaAlbum  (media->metaData("ALBUM"      ));
setMetaTitle  (media->metaData("TITLE"      ));
setMetaDate   (media->metaData("DATE"       ));
setMetaGenre  (media->metaData("GENRE"      ));
setMetaTrack  (media->metaData("TRACKNUMBER"));
setMetaComment(media->metaData("DESCRIPTION"));


outputPaths

public final java.util.List outputPaths()
Returns the paths to which this media node outputs media.

See also:
inputPaths().


pause

public final void pause()
Requests playback to pause, and the media object to enter the PausedState . If it was paused already, nothing changes.

This function is asynchronous and the media might not be paused immediately.

See also:
play(), stop(), and stateChanged() .


play

public final void play()
Requests playback of the media data to start.

Playback starts when the stateChanged() signal is emitted with PlayingState .

If the media object is already in a PlayingState , nothing happens.

See also:
stop(), pause(), and stateChanged() .


prefinishMark

public final int prefinishMark()
This property holds the time when the prefinishMarkReached signal is emitted before playback ends. This property specifies the time in milliseconds the prefinishMarkReached() signal is emitted before the playback finishes. A value of 0 disables the signal. The signal is only emitted for the last source in the media queue.

Defaults to 0 (disabled).

Warning: For some media data the total time cannot be determined accurately, therefore the accuracy of the prefinishMarkReached signal can be bad sometimes. Still, it is better to use this method than to look at totalTime() and currentTime() to emulate the behavior because the backend might have more information available than your application does through totalTime() and currentTime().

See also:
prefinishMarkReached() .


queue

public final java.util.List queue()
Returns the queued media sources.

This does list does not include the current source, returned by currentSource().

See also:
setQueue(), and enqueue().


remainingTime

public final long remainingTime()
Get the remaining time (in milliseconds) of the file currently being played.

Returns the remaining time in milliseconds.

See also:
totalTime(), currentTime(), and totalTimeChanged() .


seek

public final void seek(long time)
Requests a seek to the time indicated, specified in milliseconds.

You can only seek if state() is PlayingState , BufferingState or PausedState .

The call is asynchronous, so currentTime can still be the old value right after this method was called. If all you need is a slider that shows the current position and allows the user to seek, use the class SeekSlider.

If the current source of the media object is not seekable, calls to this functions do nothing.

See also:
SeekSlider, and tick() .


setCurrentSource

public final void setCurrentSource(MediaSource source)
Set the media source the MediaObject should use.

After the media object receives a new source, it will enter the LoadingState . When it is ready to play, it enters the StoppedState unless another state has been requested, e.g., by calling play().

source is the MediaSource object to the media data. You can just as well use a QUrl or QString (for a local file) here.

We show an example:

QUrl url("http://www.example.com/music.ogg");
media->setCurrentSource(url);

See also:
currentSource().


setPrefinishMark

public final void setPrefinishMark(int msecToEnd)
This property holds the time when the prefinishMarkReached signal is emitted before playback ends. This property specifies the time in milliseconds the prefinishMarkReached() signal is emitted before the playback finishes. A value of 0 disables the signal. The signal is only emitted for the last source in the media queue.

Defaults to 0 (disabled).

Warning: For some media data the total time cannot be determined accurately, therefore the accuracy of the prefinishMarkReached signal can be bad sometimes. Still, it is better to use this method than to look at totalTime() and currentTime() to emulate the behavior because the backend might have more information available than your application does through totalTime() and currentTime().

See also:
prefinishMarkReached() .


setQueue

public final void setQueue(java.util.List sources)
Set the sources to play when the current source has finished.

This function will overwrite the current queue.

See also:
clearQueue(), and enqueue().


setQueueToUrls

public final void setQueueToUrls(java.util.List urls)
Set the urls to play when the current media has finished.

This function overwrites the current queue.

See also:
clearQueue(), and enqueue().


setTickInterval

public final void setTickInterval(int newTickInterval)
This property holds The time interval in milliseconds between two ticks. The tick() signal is emitted continuously during playback. The tick interval is the time that elapses between the emission of two tick signals. If you set the interval to 0 the tick signal gets disabled.

The tick() signal can, for instance, be used to update widgets that show the current position in the playback of a media source.

Defaults to 0 (disabled).

Warning: The back-end is free to choose a different tick interval close to what you asked for. This means that the following code may fail:

int x = 200;
media->setTickInterval(x);
Q_ASSERT(x == producer->tickInterval());
On the other hand the following is guaranteed:
int x = 200;
media->setTickInterval(x);
Q_ASSERT(x >= producer->tickInterval() &&
         x <= 2producer->tickInterval());

See also:
tick() .


setTransitionTime

public final void setTransitionTime(int msec)
This property Defines the time between playback of two media sources in the media queue. A positive transition time defines a gap of silence between queued media sources.

A transition time of 0 ms requests gapless playback (i.e., the next source in the media queue starts immediately after the playback of the current source finishes).

A negative transition time defines a crossfade between the queued media sources.

Defaults to 0 (gapless playback).

Warning: This feature might not work reliably with every backend.


state

public final Phonon.State state()
Returns the current Phonon::State of the object.

See also:
Phonon::State , and stateChanged() .


stop

public final void stop()
Requests playback to stop, and the media object to enter the StoppedState . If it was stopped before nothing changes.

This function is asynchronous and the media might not be stopped immediately.

See also:
play(), pause(), and stateChanged() .


tickInterval

public final int tickInterval()
This property holds The time interval in milliseconds between two ticks. The tick() signal is emitted continuously during playback. The tick interval is the time that elapses between the emission of two tick signals. If you set the interval to 0 the tick signal gets disabled.

The tick() signal can, for instance, be used to update widgets that show the current position in the playback of a media source.

Defaults to 0 (disabled).

Warning: The back-end is free to choose a different tick interval close to what you asked for. This means that the following code may fail:

int x = 200;
media->setTickInterval(x);
Q_ASSERT(x == producer->tickInterval());
On the other hand the following is guaranteed:
int x = 200;
media->setTickInterval(x);
Q_ASSERT(x >= producer->tickInterval() &&
         x <= 2producer->tickInterval());

See also:
tick() .


totalTime

public final long totalTime()
Get the total time (in milliseconds) of the file currently being played.

Returns the total time in milliseconds.

Warning: The total time is not defined before the media object enters the LoadingState .

See also:
totalTimeChanged() .


transitionTime

public final int transitionTime()
This property Defines the time between playback of two media sources in the media queue. A positive transition time defines a gap of silence between queued media sources.

A transition time of 0 ms requests gapless playback (i.e., the next source in the media queue starts immediately after the playback of the current source finishes).

A negative transition time defines a crossfade between the queued media sources.

Defaults to 0 (gapless playback).

Warning: This feature might not work reliably with every backend.