commit 8f8e1a318f4bd0f3dee1af578d25ada91f9e3ebe Author: sqozz Date: Thu Jun 7 21:56:19 2018 +0200 Add first PoC diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..72a2f3c --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +python-mpd2==1.0.0 +python-mpv==0.3.8 diff --git a/video-sync.py b/video-sync.py new file mode 100755 index 0000000..58c6115 --- /dev/null +++ b/video-sync.py @@ -0,0 +1,53 @@ +import mpv +import pdb +import sys +import time +from mpd import MPDClient + +def my_log(loglevel, component, message): + print('[{}] {}: {}'.format(loglevel, component, message)) + +player = mpv.MPV(log_handler=my_log, ytdl=True, input_default_bindings=True, input_vo_keyboard=True) + +# Property access, these can be changed at runtime +@player.property_observer('time-pos') +def time_observer(_name, value): + # Here, _value is either None if nothing is playing or a float containing + # fractional seconds since the beginning of the file. + #print('Now playing at {:.2f}s'.format(value)) + pass + +#player.fullscreen = True +player.mute = True +player.loop_playlist = 'inf' +# Option access, in general these require the core to reinitialize +player['vo'] = 'opengl' + +@player.on_key_press('q') +def my_q_binding(): + sys.exit() + +client = MPDClient() +player.play('https://www.youtube.com/watch?v=RChFX5I2dkc') +while True: + client.connect("10.42.0.3", 6600) + mpd_time = int(client.status().get("time").split(":")[0]) + video_time = player.time_pos + try: + video_time = int(video_time) + except TypeError: + pass + else: + #pdb.set_trace() + delta = abs(mpd_time - video_time) + print("mpd: {}, video: {}, delta: {}".format(mpd_time, video_time, delta)) + + if delta > 1: + print("delta > 1s, syncing") + player.time_pos = mpd_time + + client.disconnect() + + time.sleep(1) + +del player