Flamenco: add fps, output_file_extension, and images_or_video job settings
These are all needed to use FFmpeg on the worker to render a video from rendered image sequences. - fps: float, the scene FPS - images_or_video: either 'images' or 'video', depending on what's being output by Blender. We don't support using FFmpeg to join chunked videos yet. - output_file_extension: string like '.png' or '.exr', only set when outputting images (since doing this for video requires a lookup table and isn't even being used at the moment).
This commit is contained in:
parent
85f911cb59
commit
113eb8f7ab
@ -4,6 +4,8 @@
|
|||||||
## Version 1.9.5 (in development)
|
## Version 1.9.5 (in development)
|
||||||
|
|
||||||
- Fix crashing Blender when running in background mode (e.g. without GUI).
|
- Fix crashing Blender when running in background mode (e.g. without GUI).
|
||||||
|
- Flamenco: Include extra job parameters to allow for encoding a video at the end of a render
|
||||||
|
job that produced an image sequence.
|
||||||
|
|
||||||
|
|
||||||
## Version 1.9.4 (2018-11-01)
|
## Version 1.9.4 (2018-11-01)
|
||||||
|
@ -53,6 +53,9 @@ log = logging.getLogger(__name__)
|
|||||||
# Global flag used to determine whether panels etc. can be drawn.
|
# Global flag used to determine whether panels etc. can be drawn.
|
||||||
flamenco_is_active = False
|
flamenco_is_active = False
|
||||||
|
|
||||||
|
# 'image' file formats that actually produce a video.
|
||||||
|
VIDEO_FILE_FORMATS = {'FFMPEG', 'AVI_RAW', 'AVI_JPEG'}
|
||||||
|
|
||||||
|
|
||||||
@pyside_cache('manager')
|
@pyside_cache('manager')
|
||||||
def available_managers(self, context):
|
def available_managers(self, context):
|
||||||
@ -240,6 +243,9 @@ class FLAMENCO_OT_render(async_loop.AsyncModalOperatorMixin,
|
|||||||
'filepath': manager.replace_path(outfile),
|
'filepath': manager.replace_path(outfile),
|
||||||
'frames': frame_range,
|
'frames': frame_range,
|
||||||
'render_output': manager.replace_path(render_output),
|
'render_output': manager.replace_path(render_output),
|
||||||
|
|
||||||
|
# Used for FFmpeg combining output frames into a video.
|
||||||
|
'fps': scene.render.fps / scene.render.fps_base,
|
||||||
}
|
}
|
||||||
|
|
||||||
# Add extra settings specific to the job type
|
# Add extra settings specific to the job type
|
||||||
@ -256,6 +262,28 @@ class FLAMENCO_OT_render(async_loop.AsyncModalOperatorMixin,
|
|||||||
settings['cycles_sample_count'] = samples
|
settings['cycles_sample_count'] = samples
|
||||||
settings['format'] = 'EXR'
|
settings['format'] = 'EXR'
|
||||||
|
|
||||||
|
# Let Flamenco Server know whether we'll output images or video.
|
||||||
|
output_format = settings.get('format') or scene.render.image_settings.file_format
|
||||||
|
if output_format in VIDEO_FILE_FORMATS:
|
||||||
|
# Currently we don't do any postprocessing for video, so we don't
|
||||||
|
# bother figuring out the final output filename.
|
||||||
|
settings['images_or_video'] = 'video'
|
||||||
|
else:
|
||||||
|
settings['images_or_video'] = 'images'
|
||||||
|
# The file extension is necessary to find the output files and
|
||||||
|
# render them to a video with ffmpeg.
|
||||||
|
settings['output_file_extension'] = scene.render.file_extension # like '.png'
|
||||||
|
|
||||||
|
# Always pass the file format, even though it won't be
|
||||||
|
# necessary for the actual render command (the blend file
|
||||||
|
# already has the correct setting). It's used by other
|
||||||
|
# commands, such as FFmpeg combining output frames into
|
||||||
|
# a video.
|
||||||
|
#
|
||||||
|
# Note that this might be overridden above when the job type
|
||||||
|
# requires a specific file format.
|
||||||
|
settings.setdefault('format', scene.render.image_settings.file_format)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
job_info = await create_job(self.user_id,
|
job_info = await create_job(self.user_id,
|
||||||
prefs.project.project,
|
prefs.project.project,
|
||||||
|
Reference in New Issue
Block a user