С помощью Blender Python API в Video Sequence Editor можно добавлять стрипы различных типов — видео, аудио, изображения и секвенции изображений.
Изображения, звуковые и видео-файлы добавляются в нужные каналы Sequencer путем создания новых элементов в коллекции свойств sequences объекта bpy.types.SequenceEditor.
Добавление звука
Для того, чтобы добавить в Sequencer звуковой файл, используем функцию «new_sound»
|
1 2 3 4 5 6 |
sound_strip = bpy.context.scene.sequence_editor.sequences.new_sound( name='sound', filepath='_PATH_/sound.wav', channel=1, frame_start=1 ) |
со следующими параметрами:
name — имя создаваемого стрипа
filepath — полный путь к исходному звуковому файлу
channel — номер канала секвенсора, на котором нужно разместить данный стрип
frame_start — номер кадра, на который нужно поместить начало данного стрипа
Добавление видео
Для добавления в Sequencer стрипа с видео используется функция «new_movie»
|
1 2 3 4 5 6 |
video_strip = bpy.context.scene.sequence_editor.sequences.new_movie( name='video', filepath='_PATH_/video.mp4', channel=2, frame_start=1 ) |
с аналогичными параметрами.
Добавление изображения
Для добавления в секвенсор изображения используется функция «new_image»
|
1 2 3 4 5 6 |
image_strip = bpy.context.scene.sequence_editor.sequences.new_image( name='image', filepath='_PATH_/image.png', channel=3, frame_start=1 ) |
с теми же параметрами.
Все эти функции возвращают указатель на созданный стрип.
Добавление секвенции изображений
Для создания стрипа с секвенцией — набором последовательных изображений, необходимо вызвать оператор «sequencer.image_strip_add»:
|
1 2 3 4 5 6 |
bpy.ops.sequencer.image_strip_add( directory='_DIRECTORY_PATH_', files=[{"name": 'image001.png'}, {"name": 'image002.png'}, {"name": 'image003.png'}], frame_start=1, channel=4 ) |
где:
directory — полный путь к директории, в которой размещается нужный набор изображений
files — список словарей, каждый из которых состоит из пары: «name» — имя файла с расширением. В этом списке через такие словарные пары нужно перечислить все изображения, которые нужно загрузить в стрип.
channel — номер канала секвенсора, на котором нужно разместить данный стрип
frame_start — номер кадра, на который нужно поместить начало данного стрипа
При использовании этого оператора нужно иметь ввиду, что он контекстно-зависимый. Если вы будете вызывать его не из контекста окна Sequence Editor, а например, из текстового редактора, необходимо указать для него правильный контекст, иначе оператор выдаст ошибку:
Operator bpy.ops.sequencer.image_strip_add.poll() failed, context is incorrect
Переопределим контекст на контекст окна Sequence Editor и вызовем оператор следующим образом:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
override_context = bpy.context.copy() area = [area for area in bpy.context.screen.areas if area.type == "SEQUENCE_EDITOR"][0] override_context['window'] = bpy.context.window override_context['screen'] = bpy.context.screen override_context['area'] = area override_context['region'] = area.regions[-1] override_context['scene'] = bpy.context.scene override_context['space_data'] = area.spaces.active bpy.ops.sequencer.image_strip_add( override_context, directory='_DIRECTORY_PATH_', files=[{"name": 'image001.png'}, {"name": 'image002.png'}, {"name": 'image003.png'}], frame_start=1, channel=4 ) |
В результате мы загрузили нужные нам стрипы в Sequence Editor.

.blend file on Patreon