Ffmpeg versioning issues (#68)

* FFMPEG version cleanup

* Make sure attempts don't go on forever

* Use latest version when version not defined. Add latest to UI
This commit is contained in:
2023-11-22 10:47:47 -06:00
committed by GitHub
parent 4847338fc2
commit 525fd99a58
6 changed files with 22 additions and 9 deletions

View File

@@ -13,7 +13,7 @@ class BaseRenderEngine(object):
def __init__(self, custom_path=None):
self.custom_renderer_path = custom_path
if not self.renderer_path():
if not self.renderer_path() or not os.path.exists(self.renderer_path()):
raise FileNotFoundError(f"Cannot find path to renderer for {self.name()} instance")
def renderer_path(self):

View File

@@ -72,6 +72,7 @@ class BaseRenderWorker(Base):
self.parent = parent
self.children = {}
self.name = name or os.path.basename(input_path)
self.maximum_attempts = 3
# Frame Ranges
self.project_length = -1
@@ -193,8 +194,15 @@ class BaseRenderWorker(Base):
while True:
# Log attempt #
if attempt_number:
f.write(f'\n{"=" * 80} Attempt #{attempt_number} {"=" * 30}\n\n')
logger.warning(f"Restarting render - Attempt #{attempt_number}")
if attempt_number >= self.maximum_attempts:
err_msg = f"Maximum attempts exceeded ({attempt_number})"
logger.error(err_msg)
self.status = RenderStatus.ERROR
self.errors.append(err_msg)
return
else:
f.write(f'\n{"=" * 80} Attempt #{attempt_number} {"=" * 30}\n\n')
logger.warning(f"Restarting render - Attempt #{attempt_number}")
attempt_number += 1
# Start process and get updates

View File

@@ -211,8 +211,8 @@ class EngineManager:
raise FileNotFoundError(f"Cannot find any installed {renderer} engines")
# Find the path to the requested engine version or use default
engine_path = None if engine_version else all_versions[0]['path']
if engine_version:
engine_path = None
if engine_version and engine_version != 'latest':
for ver in all_versions:
if ver['version'] == engine_version:
engine_path = ver['path']
@@ -225,6 +225,9 @@ class EngineManager:
raise FileNotFoundError(f"Cannot download requested version: {renderer} {engine_version}")
engine_path = download_result['path']
logger.info("Engine downloaded. Creating worker.")
else:
logger.debug(f"Using latest engine version ({all_versions[0]['version']})")
engine_path = all_versions[0]['path']
if not engine_path:
raise FileNotFoundError(f"Cannot find requested engine version {engine_version}")

View File

@@ -17,7 +17,7 @@ class FFMPEGRenderWorker(BaseRenderWorker):
def generate_worker_subprocess(self):
cmd = [self.engine.default_renderer_path(), '-y', '-stats', '-i', self.input_path]
cmd = [self.renderer_path, '-y', '-stats', '-i', self.input_path]
# Resize frame
if self.args.get('x_resolution', None) and self.args.get('y_resolution', None):
@@ -29,7 +29,7 @@ class FFMPEGRenderWorker(BaseRenderWorker):
cmd.extend(raw_args.split(' '))
# Close with output path
cmd.append(self.output_path)
cmd.extend(['-max_muxing_queue_size', '1024', self.output_path])
return cmd
def percent_complete(self):