При указании полного пути, по которому необходимо сохранить отрендеренную анимацию, нужно правильно указывать расширение файла, которое будет изменяться в зависимости от выбранного для сохранения кодека.
И если для рендера статических картинок расширение выходного файла можно легко получить через свойство “file_extension”:
1 2 3 |
print(bpy.context.scene.render.file_extension) # .png |
То для рендера видео, данное свойство все равно будет возвращать расширение файла, используемого при подготовке кадров, а не конечное расширение готового видео-файла.
Для того, чтобы получить именно расширение, с которым нужно сохранить готовую анимацию, напишем простую функцию:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
def video_file_extension(): ext = { 'MPEG1': 'mpeg1', 'MPEG2': 'mpeg2', 'MPEG4': 'mp4', 'AVI': 'avi', 'QUICKTIME': 'mov', 'DV': 'dv', 'OGG': 'ogg', 'MKV': 'mkv', 'FLASH': 'flv', 'WEBM': 'webm' } return '.' + ext[bpy.context.scene.render.ffmpeg.format] |
В ней мы перечисляем все поддерживаемые Blender форматы видео кодеков и соответствующие этим форматам расширения файлов.
Теперь мы можем легко получить расширение для выходного файла просто вызвав функцию:
1 2 3 |
print(video_file_extension()) # .mov |