|
|
@ -64,18 +64,23 @@ def escape_ffmpeg_text(value: str): |
|
|
|
return value |
|
|
|
return value |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_meta_text(route: Route): |
|
|
|
def get_logreader(route: Route): |
|
|
|
metadata = route.get_metadata() |
|
|
|
return LogReader(route.qlog_paths()[0] if len(route.qlog_paths()) else route.name.canonical_name) |
|
|
|
origin_parts = metadata['git_remote'].split('/') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_meta_text(lr: LogReader, route: Route): |
|
|
|
|
|
|
|
init_data = lr.first('initData') |
|
|
|
|
|
|
|
car_params = lr.first('carParams') |
|
|
|
|
|
|
|
origin_parts = init_data.gitRemote.split('/') |
|
|
|
origin = origin_parts[3] if len(origin_parts) > 3 else 'unknown' |
|
|
|
origin = origin_parts[3] if len(origin_parts) > 3 else 'unknown' |
|
|
|
return ', '.join([ |
|
|
|
return ', '.join([ |
|
|
|
f"openpilot v{metadata['version']}", |
|
|
|
f"openpilot v{init_data.version}", |
|
|
|
f"route: {metadata['fullname']}", |
|
|
|
f"route: {route.name.canonical_name}", |
|
|
|
f"car: {metadata['platform']}", |
|
|
|
f"car: {car_params.carFingerprint}", |
|
|
|
f"origin: {origin}", |
|
|
|
f"origin: {origin}", |
|
|
|
f"branch: {metadata['git_branch']}", |
|
|
|
f"branch: {init_data.gitBranch}", |
|
|
|
f"commit: {metadata['git_commit'][:7]}", |
|
|
|
f"commit: {init_data.gitCommit[:7]}", |
|
|
|
f"modified: {str(metadata['git_dirty']).lower()}", |
|
|
|
f"modified: {str(init_data.dirty).lower()}", |
|
|
|
]) |
|
|
|
]) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -116,8 +121,7 @@ def parse_args(parser: ArgumentParser): |
|
|
|
return args |
|
|
|
return args |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def populate_car_params(route: Route): |
|
|
|
def populate_car_params(lr: LogReader): |
|
|
|
lr = LogReader(route.qlog_paths()[0] if len(route.qlog_paths()) else route.name.canonical_name) |
|
|
|
|
|
|
|
init_data = lr.first('initData') |
|
|
|
init_data = lr.first('initData') |
|
|
|
assert init_data is not None |
|
|
|
assert init_data is not None |
|
|
|
|
|
|
|
|
|
|
@ -188,6 +192,7 @@ def clip( |
|
|
|
title: str | None, |
|
|
|
title: str | None, |
|
|
|
): |
|
|
|
): |
|
|
|
logger.info(f'clipping route {route.name.canonical_name}, start={start} end={end} quality={quality} target_filesize={target_mb}MB') |
|
|
|
logger.info(f'clipping route {route.name.canonical_name}, start={start} end={end} quality={quality} target_filesize={target_mb}MB') |
|
|
|
|
|
|
|
lr = get_logreader(route) |
|
|
|
|
|
|
|
|
|
|
|
begin_at = max(start - SECONDS_TO_WARM, 0) |
|
|
|
begin_at = max(start - SECONDS_TO_WARM, 0) |
|
|
|
duration = end - start |
|
|
|
duration = end - start |
|
|
@ -197,7 +202,7 @@ def clip( |
|
|
|
display = f':{randint(99, 999)}' |
|
|
|
display = f':{randint(99, 999)}' |
|
|
|
|
|
|
|
|
|
|
|
box_style = 'box=1:boxcolor=black@0.33:boxborderw=7' |
|
|
|
box_style = 'box=1:boxcolor=black@0.33:boxborderw=7' |
|
|
|
meta_text = get_meta_text(route) |
|
|
|
meta_text = get_meta_text(lr, route) |
|
|
|
overlays = [ |
|
|
|
overlays = [ |
|
|
|
# metadata overlay |
|
|
|
# metadata overlay |
|
|
|
f"drawtext=text='{escape_ffmpeg_text(meta_text)}':fontfile={OPENPILOT_FONT}:fontcolor=white:fontsize=15:{box_style}:x=(w-text_w)/2:y=5.5:enable='between(t,1,5)'", |
|
|
|
f"drawtext=text='{escape_ffmpeg_text(meta_text)}':fontfile={OPENPILOT_FONT}:fontcolor=white:fontsize=15:{box_style}:x=(w-text_w)/2:y=5.5:enable='between(t,1,5)'", |
|
|
@ -240,7 +245,7 @@ def clip( |
|
|
|
xvfb_cmd = ['Xvfb', display, '-terminate', '-screen', '0', f'{RESOLUTION}x{PIXEL_DEPTH}'] |
|
|
|
xvfb_cmd = ['Xvfb', display, '-terminate', '-screen', '0', f'{RESOLUTION}x{PIXEL_DEPTH}'] |
|
|
|
|
|
|
|
|
|
|
|
with OpenpilotPrefix(prefix, shared_download_cache=True): |
|
|
|
with OpenpilotPrefix(prefix, shared_download_cache=True): |
|
|
|
populate_car_params(route) |
|
|
|
populate_car_params(lr) |
|
|
|
|
|
|
|
|
|
|
|
env = os.environ.copy() |
|
|
|
env = os.environ.copy() |
|
|
|
env['DISPLAY'] = display |
|
|
|
env['DISPLAY'] = display |
|
|
|