public class EmbeddedMediaPlayerComponent extends Panel implements MediaPlayerEventListener, MouseListener, MouseMotionListener, MouseWheelListener, KeyListener
This component encapsulates a media player and an associated video surface suitable for embedding inside a graphical user interface.
Most implementation details, like creating a factory and connecting the various objects together, are encapsulated.
The default implementation will work out-of-the-box, but there are various template methods available to sub-classes to tailor the behaviour of the component.
This class implements the most the most common use-case for an embedded media player and is
intended to enable a developer to get quickly started with the vlcj framework. More advanced
applications are free to directly use the MediaPlayerFactory
, if required, as has always
been the case.
This component also implements the various media player listener interfaces, consequently an implementation sub-class can simply override those listener methods to handle events.
Applications can get a handle to the underlying media player object by invoking
getMediaPlayer()
.
To use, simply create an instance of this class and add it to a visual container component like a
JPanel
(or any other Container
).
For example, here a media player component is used directly as the content pane of a
JFrame
, and only two lines of code that use vlcj are required:
frame = new JFrame(); mediaPlayerComponent = new EmbeddedMediaPlayerComponent(); // <--- 1 frame.setContentPane(mediaPlayerComponent); frame.setSize(1050, 600); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); mediaPlayerComponent.getMediaPlayer().playMedia(mrl); // <--- 2An example of a sub-class to tailor behaviours and override event handlers:
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() { protected String[] onGetMediaPlayerFactoryArgs() { return new String[] {"--no-video-title-show"}; } protected FullScreenStrategy onGetFullScreenStrategy() { return new XFullScreenStrategy(frame); } public void videoOutputAvailable(MediaPlayer mediaPlayer, boolean videoOutput) { } public void error(MediaPlayer mediaPlayer) { } public void finished(MediaPlayer mediaPlayer) { } };This component also provides template methods for mouse and keyboard events - these are events for the video surface and not for the
Panel
that this component is itself
contained in. If for some reason you need events for the Panel
you can just add
them by calling the usual add listener methods.
You can use template methods and/or add your own listeners depending on your needs.
Key events will only be delivered if the video surface has the focus. It is up to you to manage that.
When the media player component is no longer needed, it should be released by invoking the
release()
method.
Since the media player factory associated by this component may be created by this component itself or may be shared with some other media player resources it is the responsibility of the application to also release the media player factory at the appropriate time.
It is always a better strategy to reuse media player components, rather than repeatedly creating and destroying instances.
Modifier and Type | Class and Description |
---|---|
static class |
EmbeddedMediaPlayerComponent.InputEvents
Enumeration of flags for controller input (mouse and keyboard) event handling for the video
surface.
|
Component.BaselineResizeBehavior
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
Constructor and Description |
---|
EmbeddedMediaPlayerComponent()
Construct a media player component.
|
Modifier and Type | Method and Description |
---|---|
void |
audioDeviceChanged(MediaPlayer mediaPlayer,
String audioDevice)
The audio device changed.
|
void |
backward(MediaPlayer mediaPlayer)
Media skipped backward.
|
void |
buffering(MediaPlayer mediaPlayer,
float newCache)
Buffering media.
|
void |
chapterChanged(MediaPlayer mediaPlayer,
int newChapter)
The chapter changed.
|
void |
corked(MediaPlayer mediaPlayer,
boolean corked)
The media player was corked/un-corked.
|
void |
elementaryStreamAdded(MediaPlayer mediaPlayer,
int type,
int id)
An elementary stream was added.
|
void |
elementaryStreamDeleted(MediaPlayer mediaPlayer,
int type,
int id)
An elementary stream was deleted.
|
void |
elementaryStreamSelected(MediaPlayer mediaPlayer,
int type,
int id)
An elementary stream was selected.
|
void |
endOfSubItems(MediaPlayer mediaPlayer)
The end of the media sub-items was reached.
|
void |
error(MediaPlayer mediaPlayer)
An error occurred.
|
void |
finished(MediaPlayer mediaPlayer)
Media finished playing (i.e.
|
void |
forward(MediaPlayer mediaPlayer)
Media skipped forward.
|
EmbeddedMediaPlayer |
getMediaPlayer()
Get the embedded media player reference.
|
MediaPlayerFactory |
getMediaPlayerFactory()
Get the media player factory reference.
|
Canvas |
getVideoSurface()
Get the video surface
Canvas component. |
void |
keyPressed(KeyEvent e) |
void |
keyReleased(KeyEvent e) |
void |
keyTyped(KeyEvent e) |
void |
lengthChanged(MediaPlayer mediaPlayer,
long newLength)
Media length changed.
|
void |
mediaChanged(MediaPlayer mediaPlayer,
libvlc_media_t media,
String mrl)
The media changed.
|
void |
mediaDurationChanged(MediaPlayer mediaPlayer,
long newDuration)
The current media duration changed.
|
void |
mediaFreed(MediaPlayer mediaPlayer)
The current media was freed.
|
void |
mediaMetaChanged(MediaPlayer mediaPlayer,
int metaType)
Current media meta data changed.
|
void |
mediaParsedChanged(MediaPlayer mediaPlayer,
int newStatus)
The current media parsed status changed.
|
void |
mediaStateChanged(MediaPlayer mediaPlayer,
int newState)
The current media state changed.
|
void |
mediaSubItemAdded(MediaPlayer mediaPlayer,
libvlc_media_t subItem)
A new sub-item was added to the current media.
|
void |
mediaSubItemTreeAdded(MediaPlayer mediaPlayer,
libvlc_media_t item)
A sub-item tree was added to the media.
|
void |
mouseClicked(MouseEvent e) |
void |
mouseDragged(MouseEvent e) |
void |
mouseEntered(MouseEvent e) |
void |
mouseExited(MouseEvent e) |
void |
mouseMoved(MouseEvent e) |
void |
mousePressed(MouseEvent e) |
void |
mouseReleased(MouseEvent e) |
void |
mouseWheelMoved(MouseWheelEvent e) |
void |
muted(MediaPlayer mediaPlayer,
boolean muted)
The audio was muted/un-muted.
|
void |
newMedia(MediaPlayer mediaPlayer)
New media was opened.
|
void |
opening(MediaPlayer mediaPlayer)
Opening the media.
|
void |
pausableChanged(MediaPlayer mediaPlayer,
int newSeekable)
Media pausable status changed.
|
void |
paused(MediaPlayer mediaPlayer)
Media paused.
|
void |
playing(MediaPlayer mediaPlayer)
The media started playing.
|
void |
positionChanged(MediaPlayer mediaPlayer,
float newPosition)
Media play-back position changed.
|
void |
release()
Release the media player component and the associated native media player resources.
|
void |
release(boolean releaseFactory)
Release the media player component and the associated media player factory.
|
void |
scrambledChanged(MediaPlayer mediaPlayer,
int newScrambled)
Program scrambled changed.
|
void |
seekableChanged(MediaPlayer mediaPlayer,
int newSeekable)
Media seekable status changed.
|
void |
setCursorEnabled(boolean enabled)
Enable or disable the mouse cursor when it is over the component.
|
void |
snapshotTaken(MediaPlayer mediaPlayer,
String filename)
A snapshot was taken.
|
void |
stopped(MediaPlayer mediaPlayer)
Media stopped.
|
void |
subItemFinished(MediaPlayer mediaPlayer,
int subItemIndex)
A sub-item finished playing.
|
void |
subItemPlayed(MediaPlayer mediaPlayer,
int subItemIndex)
A sub-item was played.
|
void |
timeChanged(MediaPlayer mediaPlayer,
long newTime)
Media play-back time changed.
|
void |
titleChanged(MediaPlayer mediaPlayer,
int newTitle)
Media title changed.
|
void |
videoOutput(MediaPlayer mediaPlayer,
int newCount)
The number of video outputs changed.
|
void |
volumeChanged(MediaPlayer mediaPlayer,
float volume)
The volume changed.
|
addNotify, getAccessibleContext
add, add, add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getInsets, getLayout, getListeners, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, isValidateRoot, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, remove, remove, removeAll, removeContainerListener, removeNotify, setComponentZOrder, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, setLayout, transferFocusDownCycle, update, validate
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, dispatchEvent, enable, enable, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getToolkit, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, printAll, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocusInWindow, reshape, resize, resize, revalidate, setBackground, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setName, setPreferredSize, setSize, setSize, setVisible, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
public EmbeddedMediaPlayerComponent()
public final MediaPlayerFactory getMediaPlayerFactory()
public final EmbeddedMediaPlayer getMediaPlayer()
An application uses this handle to control the media player, add listeners and so on.
public final Canvas getVideoSurface()
Canvas
component.
An application may want to add key/mouse listeners to the video surface component.
public final void setCursorEnabled(boolean enabled)
Note that you may see glitchy behaviour if you try and disable the cursor after you show the window/frame that contains your video surface.
If you want to disable the cursor for this component you should do so before you show the window.
enabled
- true
to enable (show) the cursor; false
to disable (hide) itpublic final void release()
The associated media player factory will not be released, the client application is responsible for releasing the factory at the appropriate time.
public final void release(boolean releaseFactory)
Optionally release the media player factory.
This method invokes release()
, then depending on the value of the releaseFactory
parameter the associated factory will also be released.
releaseFactory
- true
if the factory should also be released; false
if it should notpublic void mediaChanged(MediaPlayer mediaPlayer, libvlc_media_t media, String mrl)
MediaPlayerEventListener
mediaChanged
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventmedia
- new media instancemrl
- media resource locatorpublic void opening(MediaPlayer mediaPlayer)
MediaPlayerEventListener
opening
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventpublic void buffering(MediaPlayer mediaPlayer, float newCache)
MediaPlayerEventListener
buffering
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventnewCache
- percentage complete, ranging from 0.0 to 100.0public void playing(MediaPlayer mediaPlayer)
MediaPlayerEventListener
There is no guarantee that a video output has been created at this point.
playing
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventpublic void paused(MediaPlayer mediaPlayer)
MediaPlayerEventListener
paused
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventpublic void stopped(MediaPlayer mediaPlayer)
MediaPlayerEventListener
stopped
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventpublic void forward(MediaPlayer mediaPlayer)
MediaPlayerEventListener
forward
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventpublic void backward(MediaPlayer mediaPlayer)
MediaPlayerEventListener
backward
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventpublic void finished(MediaPlayer mediaPlayer)
MediaPlayerEventListener
finished
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventpublic void timeChanged(MediaPlayer mediaPlayer, long newTime)
MediaPlayerEventListener
timeChanged
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventnewTime
- new timepublic void positionChanged(MediaPlayer mediaPlayer, float newPosition)
MediaPlayerEventListener
positionChanged
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventnewPosition
- percentage between 0.0 and 1.0public void seekableChanged(MediaPlayer mediaPlayer, int newSeekable)
MediaPlayerEventListener
seekableChanged
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventnewSeekable
- new seekable statuspublic void pausableChanged(MediaPlayer mediaPlayer, int newSeekable)
MediaPlayerEventListener
pausableChanged
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventnewSeekable
- new pausable statuspublic void titleChanged(MediaPlayer mediaPlayer, int newTitle)
MediaPlayerEventListener
titleChanged
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventnewTitle
- new titlepublic void snapshotTaken(MediaPlayer mediaPlayer, String filename)
MediaPlayerEventListener
snapshotTaken
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventfilename
- name of the file containing the snapshotpublic void lengthChanged(MediaPlayer mediaPlayer, long newLength)
MediaPlayerEventListener
lengthChanged
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventnewLength
- new length (number of milliseconds)public void videoOutput(MediaPlayer mediaPlayer, int newCount)
MediaPlayerEventListener
videoOutput
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventnewCount
- new number of video outputspublic void scrambledChanged(MediaPlayer mediaPlayer, int newScrambled)
MediaPlayerEventListener
scrambledChanged
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventnewScrambled
- new scrambled valuepublic void elementaryStreamAdded(MediaPlayer mediaPlayer, int type, int id)
MediaPlayerEventListener
elementaryStreamAdded
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventtype
- type of streamid
- identifier of streampublic void elementaryStreamDeleted(MediaPlayer mediaPlayer, int type, int id)
MediaPlayerEventListener
elementaryStreamDeleted
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventtype
- type of streamid
- identifier of streampublic void elementaryStreamSelected(MediaPlayer mediaPlayer, int type, int id)
MediaPlayerEventListener
elementaryStreamSelected
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventtype
- type of streamid
- identifier of streampublic void corked(MediaPlayer mediaPlayer, boolean corked)
MediaPlayerEventListener
Corking/un-corking can occur e.g. when another media player (or some other application) starts/stops playing media.
corked
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventcorked
- true
if corked; otherwise false
public void muted(MediaPlayer mediaPlayer, boolean muted)
MediaPlayerEventListener
muted
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventmuted
- true
if muted; otherwise false
public void volumeChanged(MediaPlayer mediaPlayer, float volume)
MediaPlayerEventListener
volumeChanged
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventvolume
- new volumepublic void audioDeviceChanged(MediaPlayer mediaPlayer, String audioDevice)
MediaPlayerEventListener
audioDeviceChanged
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventaudioDevice
- new audio devicepublic void chapterChanged(MediaPlayer mediaPlayer, int newChapter)
MediaPlayerEventListener
chapterChanged
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventnewChapter
- new chapterpublic void error(MediaPlayer mediaPlayer)
MediaPlayerEventListener
error
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventpublic void mediaMetaChanged(MediaPlayer mediaPlayer, int metaType)
MediaPlayerEventListener
mediaMetaChanged
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventmetaType
- type of meta data that changedpublic void mediaSubItemAdded(MediaPlayer mediaPlayer, libvlc_media_t subItem)
MediaPlayerEventListener
mediaSubItemAdded
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventsubItem
- native sub-item handlepublic void mediaDurationChanged(MediaPlayer mediaPlayer, long newDuration)
MediaPlayerEventListener
mediaDurationChanged
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventnewDuration
- new duration (number of milliseconds)public void mediaParsedChanged(MediaPlayer mediaPlayer, int newStatus)
MediaPlayerEventListener
mediaParsedChanged
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventnewStatus
- new parsed statuspublic void mediaFreed(MediaPlayer mediaPlayer)
MediaPlayerEventListener
mediaFreed
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventpublic void mediaStateChanged(MediaPlayer mediaPlayer, int newState)
MediaPlayerEventListener
mediaStateChanged
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventnewState
- new statepublic void mediaSubItemTreeAdded(MediaPlayer mediaPlayer, libvlc_media_t item)
MediaPlayerEventListener
mediaSubItemTreeAdded
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventitem
- media itempublic void newMedia(MediaPlayer mediaPlayer)
MediaPlayerEventListener
This is raised only for the "main" media item and not for any sub-items.
newMedia
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventpublic void subItemPlayed(MediaPlayer mediaPlayer, int subItemIndex)
MediaPlayerEventListener
There is no guarantee the sub-item actually started, but it was at least attempted to be played.
subItemPlayed
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventsubItemIndex
- index of the sub-item that was playedpublic void subItemFinished(MediaPlayer mediaPlayer, int subItemIndex)
MediaPlayerEventListener
subItemFinished
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventsubItemIndex
- index of the sub-item that finished playingpublic void endOfSubItems(MediaPlayer mediaPlayer)
MediaPlayerEventListener
This event will not be raised if the sub-items are being repeated.
endOfSubItems
in interface MediaPlayerEventListener
mediaPlayer
- media player that raised the eventpublic void mouseClicked(MouseEvent e)
mouseClicked
in interface MouseListener
public void mousePressed(MouseEvent e)
mousePressed
in interface MouseListener
public void mouseReleased(MouseEvent e)
mouseReleased
in interface MouseListener
public void mouseEntered(MouseEvent e)
mouseEntered
in interface MouseListener
public void mouseExited(MouseEvent e)
mouseExited
in interface MouseListener
public void mouseDragged(MouseEvent e)
mouseDragged
in interface MouseMotionListener
public void mouseMoved(MouseEvent e)
mouseMoved
in interface MouseMotionListener
public void mouseWheelMoved(MouseWheelEvent e)
mouseWheelMoved
in interface MouseWheelListener
public void keyTyped(KeyEvent e)
keyTyped
in interface KeyListener
public void keyPressed(KeyEvent e)
keyPressed
in interface KeyListener
public void keyReleased(KeyEvent e)
keyReleased
in interface KeyListener
Copyright © 2009–2015 Caprica Software Limited. All rights reserved.