prepare player

This commit is contained in:
j 2026-01-24 18:47:35 +01:00
commit 5567aa5560
2 changed files with 41 additions and 41 deletions

View file

@ -1135,7 +1135,7 @@ def add_tag(item, tag):
item.data['tags'].append(tag)
item.save()
def process_motion_firstframe():
def process_motion_firstframe(character="P1", keep=False):
l = itemlist.models.List.objects.get(name='Motion-Firstframe')
for i in l.items.all():
ai = Item.objects.filter(data__type__icontains='ai').filter(data__title=i.data['title'])
@ -1144,7 +1144,7 @@ def process_motion_firstframe():
continue
print(i)
try:
reshoot_item_segments(i, 'P1', keep=True)
replace_character_motion_control(i, character, keep=keep)
except:
add_tag(i, 'ai-failed')
print('>> failed', i)

View file

@ -59,6 +59,7 @@ class Sync(Thread):
_pos = None
_tick = 0
need_to_sync = False
loops = []
def __init__(self, *args, **kwargs):
self.is_main = kwargs.get('mode', 'main') == 'main'
@ -68,17 +69,24 @@ class Sync(Thread):
if self.is_main:
self.socket_enable_broadcast()
if kwargs.get("sax"):
self.sax = mpv.MPV(
if kwargs.get("music"):
music = mpv.MPV(
log_handler=mpv_log, input_default_bindings=True,
input_vo_keyboard=True,
)
self.sax.loop_file = True
self.sax.play("/srv/p_for_power/render/Saxophone-5.1.mp4")
else:
self.sax = None
music.loop_file = True
music.play("/srv/p_for_power/render/music-5.1.mp4")
self.loops.append(music)
if kwargs.get("forest"):
forest = mpv.MPV(
log_handler=mpv_log, input_default_bindings=True,
input_vo_keyboard=True,
)
forest.loop_file = True
forest.play("/srv/p_for_power/render/forest-5.1.mp4")
self.loops.append(forest)
if mpv.MPV_VERSION >= (2, 2):
self.mpv = mpv.MPV(
log_handler=mpv_log, input_default_bindings=True,
input_vo_keyboard=True,
@ -88,16 +96,6 @@ class Sync(Thread):
sub_margin_y=CONFIG["sub_margin"],
sub_ass_line_spacing=CONFIG["sub_spacing"],
)
else:
self.mpv = mpv.MPV(
log_handler=mpv_log, input_default_bindings=True,
input_vo_keyboard=True,
sub_text_font_size=CONFIG["font_size"], sub_text_font=CONFIG["font"],
sub_border_size=CONFIG["font_border"],
sub_border_color=CONFIG["sub_border_color"],
sub_margin_y=CONFIG["sub_margin"],
sub_ass_line_spacing=CONFIG["sub_spacing"],
)
if CONFIG.get("vf"):
self.mpv.vf = CONFIG["vf"]
self.mpv.observe_property('time-pos', self.time_pos_cb)
@ -124,10 +122,10 @@ class Sync(Thread):
fmt = '%Y-%m-%d %H'
now = datetime.now()
offset = (now - datetime.strptime(now.strftime(fmt), fmt)).total_seconds()
if self.sax:
self.sax.wait_until_playing()
self.sax.seek(offset, 'absolute', 'exact')
self.sax.pause = True
for loop in self.loops:
loop.wait_until_playing()
loop.seek(offset, 'absolute', 'exact')
loop.pause = True
position = 0
for idx, item in enumerate(self.mpv.playlist):
duration = ox.avinfo(item['filename'])['duration']
@ -141,8 +139,8 @@ class Sync(Thread):
break
else:
position += duration
if self.sax:
self.sax.pause = False
for loop in self.loops:
loop.pause = False
self.ready = True
Thread.__init__(self)
@ -185,8 +183,8 @@ class Sync(Thread):
return
self.is_paused = True
self.mpv.pause = True
if self.sax:
self.sax.pause = True
for loop in self.loops:
loop.pause = True
self.send_playback_state()
def p_binding(self, *args):
@ -195,8 +193,8 @@ class Sync(Thread):
self.is_paused = False
self._tick = 0
self.mpv.pause = False
if self.sax:
self.sax.pause = False
for loop in self.loops:
loop.pause = False
self.send_playback_state()
def stop(self, *args):
@ -408,16 +406,14 @@ class Sync(Thread):
def main():
prefix = os.path.expanduser('~/Videos/p_for_power')
parser = argparse.ArgumentParser(description='p_for_power sync player')
parser.add_argument('--mode', help='peer or main', default="peer")
parser.add_argument('--playlist', default='/srv/p_for_power/render/128/front.m3u', help="m3u")
parser.add_argument('--prefix', help='video location', default=prefix)
parser.add_argument('--playlist', default='/srv/p_for_power/render/front.m3u', help="m3u")
parser.add_argument('--window', action='store_true', help='run in window', default=False)
parser.add_argument('--debug', action='store_true', help='debug', default=False)
parser.add_argument('--hour', action='store_true', help='hour', default=False)
parser.add_argument('--sax', action='store_true', help='hour', default=False)
parser.add_argument('--no-forest', action='store_false', help='disable background forest loop', default=True)
parser.add_argument('--no-music', action='store_false', help='disable background music loop', default=True)
parser.add_argument('--config', help='config', default=None)
args = parser.parse_args()
@ -435,7 +431,11 @@ def main():
base = os.path.dirname(os.path.abspath(__file__))
#os.chdir(base)
player = Sync(mode=args.mode, playlist=args.playlist, fullscreen=not args.window, hour=args.hour, sax=args.sax)
player = Sync(
mode=args.mode, playlist=args.playlist, fullscreen=not args.window, hour=args.hour,
music=not args.no_music,
forest=not args.no_forest
)
while player.active:
try:
player.mpv.wait_for_playback()