def __init__(self, rewind_callback, position_callback, error_callback, playing_callback): try: from app.tools import vlc from app.tools.vlc import EventType except OSError as e: log("{}: Load library error: {}".format(__class__.__name__, e)) raise ImportError else: self._is_playing = False args = "--quiet {}".format("" if sys.platform == "darwin" else "--no-xlib") self._player = vlc.Instance(args).media_player_new() ev_mgr = self._player.event_manager() if rewind_callback: # TODO look other EventType options ev_mgr.event_attach( EventType.MediaPlayerBuffering, lambda et, p: rewind_callback(p.get_media().get_duration() ), self._player) if position_callback: ev_mgr.event_attach( EventType.MediaPlayerTimeChanged, lambda et, p: position_callback(p.get_time()), self._player) if error_callback: ev_mgr.event_attach(EventType.MediaPlayerEncounteredError, lambda et, p: error_callback(), self._player) if playing_callback: ev_mgr.event_attach(EventType.MediaPlayerPlaying, lambda et, p: playing_callback(), self._player)
def __init__(self, settings): try: from app.tools import vlc from app.tools.vlc import EventType except OSError as e: log("{}: Load library error: {}".format(__class__.__name__, e)) raise ImportError else: self._settings = settings self._is_record = False args = "--quiet {}".format("" if sys.platform == "darwin" else "--no-xlib") self._recorder = vlc.Instance(args).media_player_new()
def __init__(self, mode, widget, buf_cb, position_cb, error_cb, playing_cb): try: from app.tools import vlc from app.tools.vlc import EventType args = "--quiet {}".format("" if sys.platform == "darwin" else "--no-xlib") self._player = vlc.Instance(args).media_player_new() vlc.libvlc_video_set_key_input(self._player, False) vlc.libvlc_video_set_mouse_input(self._player, False) except (OSError, AttributeError) as e: log("{}: Load library error: {}".format(__class__.__name__, e)) raise ImportError("No VLC is found. Check that it is installed!") else: self._mode = mode self._is_playing = False ev_mgr = self._player.event_manager() if buf_cb: # TODO look other EventType options ev_mgr.event_attach( EventType.MediaPlayerBuffering, lambda et, p: buf_cb(p.get_media().get_duration()), self._player) if position_cb: ev_mgr.event_attach(EventType.MediaPlayerTimeChanged, lambda et, p: position_cb(p.get_time()), self._player) if error_cb: ev_mgr.event_attach(EventType.MediaPlayerEncounteredError, lambda et, p: error_cb(), self._player) if playing_cb: ev_mgr.event_attach(EventType.MediaPlayerPlaying, lambda et, p: playing_cb(), self._player) self.init_video_widget(widget)
def get_vlc_instance(): if Player._VLC_INSTANCE: return Player._VLC_INSTANCE _VLC_INSTANCE = vlc.Instance("--quiet --no-xlib").media_player_new() return _VLC_INSTANCE