Version

Quick search

Video player

New in version 1.2.0.

The video player widget can be used to play video and let the user control the play/pausing, volume and position. The widget cannot be customized much because of the complex assembly of numerous base widgets.

_images/videoplayer.jpg

Annotations

If you want to display text at a specific time and for a certain duration, consider annotations. An annotation file has a “.jsa” extension. The player will automatically load the associated annotation file if it exists.

An annotation file is JSON-based, providing a list of label dictionary items. The key and value must match one of the VideoPlayerAnnotation items. For example, here is a short version of a jsa file that you can find in examples/widgets/cityCC0.jsa:

[
    {"start": 0, "duration": 2,
    "text": "This is an example of annotation"},
    {"start": 2, "duration": 2,
    "bgcolor": [0.5, 0.2, 0.4, 0.5],
    "text": "You can change the background color"}
]

For our cityCC0.mpg example, the result will be:

_images/videoplayer-annotation.jpg

If you want to experiment with annotation files, test with:

python -m kivy.uix.videoplayer examples/widgets/cityCC0.mpg

Fullscreen

The video player can play the video in fullscreen, if VideoPlayer.allow_fullscreen is activated by a double-tap on the video. By default, if the video is smaller than the Window, it will be not stretched.

You can allow stretching by passing custom options to a VideoPlayer instance:

player = VideoPlayer(source='myvideo.avi', state='play',
    options={'fit_mode': 'contain'})

End-of-stream behavior

You can specify what happens when the video has finished playing by passing an eos (end of stream) directive to the underlying VideoBase class. eos can be one of ‘stop’, ‘pause’ or ‘loop’ and defaults to ‘stop’. For example, in order to loop the video:

player = VideoPlayer(source='myvideo.avi', state='play',
    options={'eos': 'loop'})

Note

The eos property of the VideoBase class is a string specifying the end-of-stream behavior. This property differs from the eos properties of the VideoPlayer and Video classes, whose eos property is simply a boolean indicating that the end of the file has been reached.

class kivy.uix.videoplayer.VideoPlayer(**kwargs)

Bases: kivy.uix.gridlayout.GridLayout

VideoPlayer class. See module documentation for more information.

on_touch_down(touch)

Receive a touch down event.

Parameters:
touch: MotionEvent class

Touch received. The touch is in parent coordinates. See relativelayout for a discussion on coordinate systems.

Returns:

bool If True, the dispatching of the touch event will stop. If False, the event will continue to be dispatched to the rest of the widget tree.

seek(percent, precise=True)
Change the position to a percentage (strictly, a proportion)

of duration.

Parameters:
percent: float or int

Position to seek as a proportion of total duration, must be between 0-1.

precise: bool, defaults to True

Precise seeking is slower, but seeks to exact requested percent.

Warning

Calling seek() before the video is loaded has no effect.

New in version 1.2.0.

Changed in version 1.10.1: The precise keyword argument has been added.

class kivy.uix.videoplayer.VideoPlayerAnnotation(**kwargs)

Bases: kivy.uix.label.Label

Annotation class used for creating annotation labels.

Additional keys are available:

  • bgcolor: [r, g, b, a] - background color of the text box

  • bgsource: ‘filename’ - background image used for the background text box

  • border: (n, e, s, w) - border used for the background image