+ instance=Instance()
+ media=instance.media_new(sys.argv[1])
+ player=instance.media_player_new()
+ player.set_media(media)
+ player.play()
+
+ event_manager=player.event_manager()
+ event_manager.event_attach(EventType.MediaPlayerEndReached, end_callback, None)
+
+ def print_info():
+ """Print information about the media."""
+ media=player.get_media()
+ print "State:", player.get_state()
+ print "Media:", media.get_mrl()
+ try:
+ print "Current time:", player.get_time(), "/", media.get_duration()
+ print "Position:", player.get_position()
+ print "FPS:", player.get_fps()
+ print "Rate:", player.get_rate()
+ print "Video size: (%d, %d)" % (player.video_get_width(), player.video_get_height())
+ except Exception:
+ pass
+
+ def forward():
+ """Go forward 1s"""
+ player.set_time(player.get_time() + 1000)
+
+ def one_frame_forward():
+ """Go forward one frame"""
+ player.set_time(player.get_time() + long(1000 / (player.get_fps() or 25)))
+
+ def one_frame_backward():
+ """Go backward one frame"""
+ player.set_time(player.get_time() - long(1000 / (player.get_fps() or 25)))
+
+ def backward():
+ """Go backward 1s"""
+ player.set_time(player.get_time() - 1000)
+
+ def print_help():
+ """Print help
+ """
+ print "Commands:"
+ for k, m in keybindings.iteritems():
+ print " %s: %s" % (k, (m.__doc__ or m.__name__).splitlines()[0])
+ print " 1-9: go to the given fraction of the movie"
+
+ def quit_app():
+ """Exit."""
+ sys.exit(0)
+
+ keybindings={
+ 'f': player.toggle_fullscreen,
+ ' ': player.pause,
+ '+': forward,
+ '-': backward,
+ '.': one_frame_forward,
+ ',': one_frame_backward,
+ '?': print_help,
+ 'i': print_info,
+ 'q': quit_app,
+ }
+
+ print "Press q to quit, ? to get help."
+ while True:
+ k=getch()
+ o=ord(k)
+ method=keybindings.get(k, None)
+ if method is not None:
+ method()
+ elif o >= 49 and o <= 57:
+ # Numeric value. Jump to a fraction of the movie.
+ v=0.1*(o-48)
+ player.set_position(v)
+
+