ai-agent-book 精选快照(<2MB 代码与文档,来自 github.com/bojieli/ai-agent-book)
Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s
Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s
This commit is contained in:
+61
@@ -0,0 +1,61 @@
|
||||
import bpy
|
||||
|
||||
INPUT_PATH = "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/source.mov"
|
||||
OUTPUT_PATH = "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/final.mp4"
|
||||
FPS = 25
|
||||
START_SECONDS = 9.0
|
||||
END_SECONDS = 12.0
|
||||
|
||||
# Calculate timing parameters
|
||||
start_frame = int(round(START_SECONDS * FPS))
|
||||
dur_frames = max(1, int(round((END_SECONDS - START_SECONDS) * FPS)))
|
||||
render_dur = int(round(dur_frames * 1.5))
|
||||
|
||||
# Setup scene
|
||||
scene = bpy.context.scene
|
||||
scene.sequence_editor_clear()
|
||||
se = scene.sequence_editor_create()
|
||||
|
||||
# Create video and audio strips
|
||||
movie = se.sequences.new_movie(name='clip', filepath=INPUT_PATH, channel=1,
|
||||
frame_start=1 - start_frame)
|
||||
sound = se.sequences.new_sound(name='audio', filepath=INPUT_PATH, channel=2,
|
||||
frame_start=1 - start_frame)
|
||||
|
||||
# Trim media to interval
|
||||
for strip in (movie, sound):
|
||||
strip.frame_offset_start = start_frame
|
||||
strip.frame_final_duration = dur_frames
|
||||
|
||||
# Apply slowmotion to video
|
||||
speed = se.sequences.new_effect(name='slowmo', type='SPEED', channel=3,
|
||||
frame_start=1, frame_end=1 + dur_frames, seq1=movie)
|
||||
speed.use_default_fade = False
|
||||
speed.speed_control = 'MULTIPLY'
|
||||
speed.speed_factor = 1.0 / 1.5
|
||||
movie.frame_final_duration = render_dur
|
||||
|
||||
# Add subtitle with background
|
||||
text = se.sequences.new_effect(name='subtitle', type='TEXT', channel=4,
|
||||
frame_start=1, frame_end=1 + render_dur)
|
||||
text.text = 'BIG BUNNY'
|
||||
text.location = (0.5, 0.12)
|
||||
text.align_x = 'CENTER'
|
||||
text.align_y = 'BOTTOM'
|
||||
text.use_box = True
|
||||
text.box_color = (0.0, 0.0, 0.0, 0.6)
|
||||
|
||||
# Configure render settings
|
||||
scene.frame_start = 1
|
||||
scene.frame_end = render_dur
|
||||
scene.render.resolution_x = 854
|
||||
scene.render.resolution_y = 480
|
||||
scene.render.resolution_percentage = 100
|
||||
scene.render.fps = FPS
|
||||
scene.render.image_settings.file_format = 'MPEG4'
|
||||
scene.render.image_settings.codec = 'H264'
|
||||
scene.render.ffmpeg.audio_codec = 'AAC'
|
||||
scene.render.filepath = OUTPUT_PATH
|
||||
|
||||
# Execute render
|
||||
bpy.ops.render.render(animation=True)
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
import bpy
|
||||
|
||||
INPUT_PATH = '/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/source.mov'
|
||||
OUTPUT_PATH = '/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/final.mp4'
|
||||
FPS = 25
|
||||
START_SECONDS = 9.000
|
||||
END_SECONDS = 12.000
|
||||
|
||||
# Calculate timing values
|
||||
start_frame = int(round(START_SECONDS * FPS))
|
||||
dur_frames = max(1, int(round((END_SECONDS - START_SECONDS) * FPS)))
|
||||
render_dur = int(round(dur_frames * 1.5))
|
||||
|
||||
# Setup scene
|
||||
scene = bpy.context.scene
|
||||
scene.sequence_editor_clear()
|
||||
se = scene.sequence_editor_create()
|
||||
|
||||
# Add movie and audio strips
|
||||
movie = se.sequences.new_movie(name='clip', filepath=INPUT_PATH, channel=1, frame_start=1 - start_frame)
|
||||
sound = se.sequences.new_sound(name='audio', filepath=INPUT_PATH, channel=2, frame_start=1 - start_frame)
|
||||
|
||||
# Set trim for both strips
|
||||
for strip in (movie, sound):
|
||||
strip.frame_offset_start = start_frame
|
||||
strip.frame_final_duration = dur_frames
|
||||
|
||||
# Add speed effect to movie
|
||||
speed = se.sequences.new_effect(name='slowmo', type='SPEED', channel=3, frame_start=1, frame_end=1 + dur_frames, seq1=movie)
|
||||
speed.use_default_fade = False
|
||||
speed.speed_control = 'MULTIPLY'
|
||||
speed.speed_factor = 1.0 / 1.5
|
||||
movie.frame_final_duration = render_dur
|
||||
|
||||
# Add subtitle text strip
|
||||
text = se.sequences.new_effect(name='subtitle', type='TEXT', channel=4, frame_start=1, frame_end=1 + render_dur)
|
||||
text.text = 'BIG BUNNY'
|
||||
text.location = (0.5, 0.12)
|
||||
text.align_x = 'CENTER'
|
||||
text.align_y = 'BOTTOM'
|
||||
text.use_box = True
|
||||
text.box_color = (0.0, 0.0, 0.0, 0.6)
|
||||
|
||||
# Render settings
|
||||
scene.frame_start = 1
|
||||
scene.frame_end = render_dur
|
||||
scene.render.resolution_x = 854
|
||||
scene.render.resolution_y = 480
|
||||
scene.render.resolution_percentage = 100
|
||||
scene.render.fps = FPS
|
||||
scene.render.fps_base = 1.0
|
||||
scene.render.filepath = OUTPUT_PATH
|
||||
scene.render.file_format = 'FFMPEG'
|
||||
scene.render.ffmpeg.format = 'MPEG4'
|
||||
scene.render.ffmpeg.codec = 'H264'
|
||||
scene.render.ffmpeg.audio_codec = 'AAC'
|
||||
|
||||
# Execute render
|
||||
bpy.ops.render.render(animation=True)
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
import bpy
|
||||
|
||||
INPUT_PATH = "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/source.mov"
|
||||
OUTPUT_PATH = "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/final.mp4"
|
||||
FPS = 25
|
||||
START_SECONDS = 9.0
|
||||
END_SECONDS = 12.0
|
||||
|
||||
# Calculate timing parameters
|
||||
start_frame = int(round(START_SECONDS * FPS))
|
||||
dur_frames = max(1, int(round((END_SECONDS - START_SECONDS) * FPS))))
|
||||
render_dur = int(round(dur_frames * 1.5))
|
||||
|
||||
# Clear existing scene data
|
||||
bpy.ops.sequencer.select_all(action='SELECT')
|
||||
bpy.ops.sequencer.delete()
|
||||
scene = bpy.context.scene
|
||||
|
||||
# Create sequence editor
|
||||
se = scene.sequence_editor_create()
|
||||
|
||||
# Add movie and audio strips
|
||||
movie = se.sequences.new_movie(
|
||||
name='clip',
|
||||
filepath=INPUT_PATH,
|
||||
channel=1,
|
||||
frame_start=1 - start_frame
|
||||
)
|
||||
sound = se.sequences.new_sound(
|
||||
name='audio',
|
||||
filepath=INPUT_PATH,
|
||||
channel=2,
|
||||
frame_start=1 - start_frame
|
||||
)
|
||||
|
||||
# Set trim for both media strips
|
||||
for strip in (movie, sound):
|
||||
strip.frame_offset_start = start_frame
|
||||
strip.frame_final_duration = dur_frames
|
||||
|
||||
# Add slowmotion effect to video
|
||||
speed = se.sequences.new_effect(
|
||||
name='slowmo',
|
||||
type='SPEED',
|
||||
channel=3,
|
||||
frame_start=1,
|
||||
frame_end=1 + dur_frames,
|
||||
seq1=movie
|
||||
)
|
||||
speed.use_default_fade = False
|
||||
speed.speed_control = 'MULTIPLY'
|
||||
speed.speed_factor = 1.0 / 1.5
|
||||
|
||||
# Extend video duration to match slowed render time
|
||||
movie.frame_final_duration = render_dur
|
||||
|
||||
# Add subtitle text with background box
|
||||
text = se.sequences.new_effect(
|
||||
name='subtitle',
|
||||
type='TEXT',
|
||||
channel=4,
|
||||
frame_start=1,
|
||||
frame_end=1 + render_dur
|
||||
)
|
||||
text.text = 'BIG BUNNY'
|
||||
text.location = (0.5, 0.12)
|
||||
text.align_x = 'CENTER'
|
||||
text.align_y = 'BOTTOM'
|
||||
text.use_box = True
|
||||
text.box_color = (0.0, 0.0, 0.0, 0.6)
|
||||
|
||||
# Configure render settings
|
||||
scene.render.resolution_x = 854
|
||||
scene.render.resolution_y = 480
|
||||
scene.render.resolution_percentage = 100
|
||||
scene.render.fps = FPS
|
||||
scene.render.fps_base = 1.0
|
||||
|
||||
# Configure output format
|
||||
scene.render.image_settings.file_format = 'FFMPEG'
|
||||
scene.render.ffmpeg.format = 'MPEG4'
|
||||
scene.render.ffmpeg.codec = 'H264'
|
||||
scene.render.ffmpeg.audio_codec = 'AAC'
|
||||
scene.render.filepath = OUTPUT_PATH
|
||||
|
||||
# Set render frame range
|
||||
scene.frame_start = 1
|
||||
scene.frame_end = render_dur
|
||||
|
||||
# Execute render
|
||||
bpy.ops.render.render(animation=True)
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
import bpy
|
||||
|
||||
INPUT_PATH = "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/source.mov"
|
||||
OUTPUT_PATH = "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/final.mp4"
|
||||
FPS = 25
|
||||
START_SECONDS = 9.000
|
||||
END_SECONDS = 12.000
|
||||
|
||||
start_frame = int(round(START_SECONDS * FPS))
|
||||
dur_frames = max(1, int(round((END_SECONDS - START_SECONDS) * FPS)))
|
||||
render_dur = int(round(dur_frames * 1.5))
|
||||
|
||||
scene = bpy.context.scene
|
||||
se = scene.sequence_editor_create()
|
||||
|
||||
# Add movie and audio strips
|
||||
movie = se.sequences.new_movie(name='clip', filepath=INPUT_PATH, channel=1, frame_start=1 - start_frame)
|
||||
sound = se.sequences.new_sound(name='audio', filepath=INPUT_PATH, channel=2, frame_start=1 - start_frame)
|
||||
|
||||
# Set trim for both strips
|
||||
for strip in (movie, sound):
|
||||
strip.frame_offset_start = start_frame
|
||||
strip.frame_final_duration = dur_frames
|
||||
|
||||
# Add speed effect for slow motion
|
||||
speed = se.sequences.new_effect(name='slowmo', type='SPEED', channel=3, frame_start=1, frame_end=1 + dur_frames, seq1=movie)
|
||||
speed.speed_control = 'MULTIPLY'
|
||||
speed.speed_factor = 1.0 / 1.5
|
||||
speed.use_default_fade = False
|
||||
movie.frame_final_duration = render_dur
|
||||
|
||||
# Add subtitle text strip
|
||||
text = se.sequences.new_effect(name='subtitle', type='TEXT', channel=4, frame_start=1, frame_end=1 + render_dur)
|
||||
text.text = 'BIG BUNNY'
|
||||
text.location = (0.5, 0.12)
|
||||
text.align_x = 'CENTER'
|
||||
text.align_y = 'BOTTOM'
|
||||
text.use_box = True
|
||||
text.box_color = (0, 0, 0, 0.6)
|
||||
|
||||
# Render settings
|
||||
scene.frame_start = 1
|
||||
scene.frame_end = render_dur
|
||||
scene.render.resolution_x = 854
|
||||
scene.render.resolution_y = 480
|
||||
scene.render.fps = FPS
|
||||
scene.render.fps_base = 1.0
|
||||
scene.render.image_settings.file_format = 'FFMPEG'
|
||||
scene.render.ffmpeg.format = 'MPEG4'
|
||||
scene.render.ffmpeg.codec = 'H264'
|
||||
scene.render.ffmpeg.audio_codec = 'AAC'
|
||||
scene.render.filepath = OUTPUT_PATH
|
||||
|
||||
# Execute render
|
||||
bpy.ops.render.render(animation=True)
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
import bpy
|
||||
|
||||
# Configuration
|
||||
INPUT_PATH = '/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/source.mov'
|
||||
OUTPUT_PATH = '/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/final.mp4'
|
||||
FPS = 25
|
||||
START_SECONDS = 9.250
|
||||
END_SECONDS = 11.000
|
||||
|
||||
# Calculate timing parameters
|
||||
start_frame = int(round(START_SECONDS * FPS))
|
||||
dur_frames = max(1, int(round((END_SECONDS - START_SECONDS) * FPS)))
|
||||
render_dur = int(round(dur_frames * 1.5))
|
||||
|
||||
# Setup scene
|
||||
scene = bpy.context.scene
|
||||
scene.sequence_editor_clear()
|
||||
se = scene.sequence_editor_create()
|
||||
|
||||
# Add movie and sound strips
|
||||
movie = se.sequences.new_movie(
|
||||
name='clip',
|
||||
filepath=INPUT_PATH,
|
||||
channel=1,
|
||||
frame_start=1 - start_frame
|
||||
)
|
||||
sound = se.sequences.new_sound(
|
||||
name='audio',
|
||||
filepath=INPUT_PATH,
|
||||
channel=2,
|
||||
frame_start=1 - start_frame
|
||||
)
|
||||
|
||||
# Trim media strips
|
||||
for strip in (movie, sound):
|
||||
strip.frame_offset_start = start_frame
|
||||
strip.frame_final_duration = dur_frames
|
||||
|
||||
# Add speed effect to movie
|
||||
speed = se.sequences.new_effect(
|
||||
name='slowmo',
|
||||
type='SPEED',
|
||||
channel=3,
|
||||
frame_start=1,
|
||||
frame_end=1 + dur_frames,
|
||||
seq1=movie
|
||||
)
|
||||
speed.use_default_fade = False
|
||||
speed.speed_control = 'MULTIPLY'
|
||||
speed.speed_factor = 1.0 / 1.5
|
||||
movie.frame_final_duration = render_dur
|
||||
|
||||
# Add subtitle text
|
||||
text = se.sequences.new_effect(
|
||||
name='subtitle',
|
||||
type='TEXT',
|
||||
channel=4,
|
||||
frame_start=1,
|
||||
frame_end=1 + render_dur
|
||||
)
|
||||
text.text = 'BIG BUNNY'
|
||||
text.location = (0.5, 0.12)
|
||||
text.align_x = 'CENTER'
|
||||
text.align_y = 'BOTTOM'
|
||||
text.use_box = True
|
||||
text.box_color = (0.0, 0.0, 0.0, 0.6)
|
||||
|
||||
# Render settings
|
||||
scene.frame_start = 1
|
||||
scene.frame_end = render_dur
|
||||
scene.render.resolution_x = 854
|
||||
scene.render.resolution_y = 480
|
||||
scene.render.resolution_percentage = 100
|
||||
scene.render.fps = FPS
|
||||
scene.render.fps_base = 1.0
|
||||
scene.render.image_settings.file_format = 'MPEG4'
|
||||
scene.render.image_settings.codec = 'H264'
|
||||
scene.render.audio_codec = 'AAC'
|
||||
scene.render.filepath = OUTPUT_PATH
|
||||
|
||||
# Execute render
|
||||
bpy.ops.render.render(animation=True)
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
import bpy
|
||||
|
||||
# Configuration
|
||||
INPUT_PATH = '/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/source.mov'
|
||||
OUTPUT_PATH = '/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/final.mp4'
|
||||
FPS = 25
|
||||
START_SECONDS = 9.250
|
||||
END_SECONDS = 11.000
|
||||
RENDER_SIZE = (854, 480)
|
||||
|
||||
# Calculate timing
|
||||
start_frame = int(round(START_SECONDS * FPS))
|
||||
dur_frames = max(1, int(round((END_SECONDS - START_SECONDS) * FPS)))
|
||||
render_dur = int(round(dur_frames * 1.5))
|
||||
|
||||
# Setup scene
|
||||
scene = bpy.context.scene
|
||||
scene.render.fps = FPS
|
||||
scene.frame_start = 1
|
||||
scene.frame_end = render_dur
|
||||
|
||||
# Clear default objects
|
||||
bpy.ops.object.select_all(action='SELECT')
|
||||
bpy.ops.object.delete()
|
||||
|
||||
# Create sequence editor
|
||||
se = scene.sequence_editor_create()
|
||||
|
||||
# Add movie strip
|
||||
movie = se.sequences.new_movie(
|
||||
name='clip',
|
||||
filepath=INPUT_PATH,
|
||||
channel=1,
|
||||
frame_start=1 - start_frame
|
||||
)
|
||||
movie.frame_offset_start = start_frame
|
||||
movie.frame_final_duration = dur_frames
|
||||
|
||||
# Add sound strip
|
||||
sound = se.sequences.new_sound(
|
||||
name='audio',
|
||||
filepath=INPUT_PATH,
|
||||
channel=2,
|
||||
frame_start=1 - start_frame
|
||||
)
|
||||
sound.frame_offset_start = start_frame
|
||||
sound.frame_final_duration = dur_frames
|
||||
|
||||
# Add speed effect to movie
|
||||
speed = se.sequences.new_effect(
|
||||
name='slowmo',
|
||||
type='SPEED',
|
||||
channel=3,
|
||||
frame_start=1,
|
||||
frame_end=1 + dur_frames,
|
||||
seq1=movie
|
||||
)
|
||||
speed.use_default_fade = False
|
||||
speed.speed_control = 'MULTIPLY'
|
||||
speed.speed_factor = 1.0 / 1.5
|
||||
movie.frame_final_duration = render_dur
|
||||
|
||||
# Add subtitle text
|
||||
text = se.sequences.new_effect(
|
||||
name='subtitle',
|
||||
type='TEXT',
|
||||
channel=4,
|
||||
frame_start=1,
|
||||
frame_end=1 + render_dur
|
||||
)
|
||||
text.text = 'BIG BUNNY'
|
||||
text.location = (0.5, 0.12)
|
||||
text.align_x = 'CENTER'
|
||||
text.align_y = 'BOTTOM'
|
||||
text.use_box = True
|
||||
text.box_color = (0.0, 0.0, 0.0, 0.6)
|
||||
|
||||
# Render settings
|
||||
scene.render.resolution_x = RENDER_SIZE[0]
|
||||
scene.render.resolution_y = RENDER_SIZE[1]
|
||||
scene.render.resolution_percentage = 100
|
||||
scene.render.image_settings.file_format = 'FFMPEG'
|
||||
scene.render.ffmpeg.format = 'MPEG4'
|
||||
scene.render.ffmpeg.codec = 'H264'
|
||||
scene.render.ffmpeg.audio_codec = 'AAC'
|
||||
scene.render.filepath = OUTPUT_PATH
|
||||
|
||||
# Render animation
|
||||
bpy.ops.render.render(animation=True)
|
||||
+88
@@ -0,0 +1,88 @@
|
||||
import bpy
|
||||
|
||||
INPUT_PATH = "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/source.mov"
|
||||
OUTPUT_PATH = "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/negative_control.mp4"
|
||||
FPS = 25
|
||||
START_SECONDS = 0.000
|
||||
END_SECONDS = 3.000
|
||||
|
||||
# Calculate timing parameters
|
||||
start_frame = int(round(START_SECONDS * FPS))
|
||||
dur_frames = max(1, int(round((END_SECONDS - START_SECONDS) * FPS)))
|
||||
render_dur = int(round(dur_frames * 1.5))
|
||||
|
||||
# Scene setup
|
||||
scene = bpy.context.scene
|
||||
scene.render.fps = FPS
|
||||
scene.render.fps_base = 1.0
|
||||
scene.render.resolution_x = 854
|
||||
scene.render.resolution_y = 480
|
||||
scene.render.resolution_percentage = 100
|
||||
|
||||
# Render settings
|
||||
scene.render.image_settings.file_format = 'FFMPEG'
|
||||
scene.render.ffmpeg.format = 'MPEG4'
|
||||
scene.render.ffmpeg.codec = 'H264'
|
||||
scene.render.ffmpeg.audio_codec = 'AAC'
|
||||
scene.render.filepath = OUTPUT_PATH
|
||||
|
||||
# Sequence editor setup
|
||||
se = scene.sequence_editor_create()
|
||||
|
||||
# Add movie strip
|
||||
movie = se.sequences.new_movie(
|
||||
name='clip',
|
||||
filepath=INPUT_PATH,
|
||||
channel=1,
|
||||
frame_start=1 - start_frame
|
||||
)
|
||||
movie.frame_offset_start = start_frame
|
||||
movie.frame_final_duration = dur_frames
|
||||
|
||||
# Add sound strip
|
||||
sound = se.sequences.new_sound(
|
||||
name='audio',
|
||||
filepath=INPUT_PATH,
|
||||
channel=2,
|
||||
frame_start=1 - start_frame
|
||||
)
|
||||
sound.frame_offset_start = start_frame
|
||||
sound.frame_final_duration = dur_frames
|
||||
|
||||
# Add speed effect
|
||||
speed = se.sequences.new_effect(
|
||||
name='slowmo',
|
||||
type='SPEED',
|
||||
channel=3,
|
||||
frame_start=1,
|
||||
frame_end=1 + dur_frames,
|
||||
seq1=movie
|
||||
)
|
||||
speed.use_default_fade = False
|
||||
speed.speed_control = 'MULTIPLY'
|
||||
speed.speed_factor = 1.0 / 1.5
|
||||
|
||||
# Extend movie duration for slowmo
|
||||
movie.frame_final_duration = render_dur
|
||||
|
||||
# Add subtitle text
|
||||
text = se.sequences.new_effect(
|
||||
name='subtitle',
|
||||
type='TEXT',
|
||||
channel=4,
|
||||
frame_start=1,
|
||||
frame_end=1 + render_dur
|
||||
)
|
||||
text.text = 'BIG BUNNY'
|
||||
text.location = (0.5, 0.12)
|
||||
text.align_x = 'CENTER'
|
||||
text.align_y = 'BOTTOM'
|
||||
text.use_box = True
|
||||
text.box_color = (0.0, 0.0, 0.0, 0.6)
|
||||
|
||||
# Set render frame range
|
||||
scene.frame_start = 1
|
||||
scene.frame_end = render_dur
|
||||
|
||||
# Render the animation
|
||||
bpy.ops.render.render(animation=True)
|
||||
Reference in New Issue
Block a user