Match scene length to narration and write fuller narration lines
This commit is contained in:
@@ -79,6 +79,7 @@ GLOBAL_DEFAULTS = {
|
|||||||
"aspect_ratio": "9:16",
|
"aspect_ratio": "9:16",
|
||||||
"target_seconds": 60,
|
"target_seconds": 60,
|
||||||
"clip_seconds": 8,
|
"clip_seconds": 8,
|
||||||
|
"scene_timing": "narration",
|
||||||
"error_cooldown_minutes": 5,
|
"error_cooldown_minutes": 5,
|
||||||
"work_hours_enabled": False,
|
"work_hours_enabled": False,
|
||||||
"work_days": "mon,tue,wed,thu,fri,sat,sun",
|
"work_days": "mon,tue,wed,thu,fri,sat,sun",
|
||||||
@@ -998,7 +999,7 @@ Every character is a cartoon: a cartoon animal, a cartoon creature, or a simple
|
|||||||
|
|
||||||
The Short has exactly {n} scenes of {clip} seconds each. Each scene has:
|
The Short has exactly {n} scenes of {clip} seconds each. Each scene has:
|
||||||
"visual": a detailed, self-contained shot description of one still image (setting, action, mood, lighting). Name the characters but do not re-describe their appearance, that comes from "characters". Never mention on-screen text or words.
|
"visual": a detailed, self-contained shot description of one still image (setting, action, mood, lighting). Name the characters but do not re-describe their appearance, that comes from "characters". Never mention on-screen text or words.
|
||||||
"narration": one spoken line of at most {words} words.
|
"narration": one spoken line of {max(4, words - 5)} to {words} words, so it fills most of the scene.
|
||||||
|
|
||||||
Scene 1 must hook the viewer in the first 2 seconds. The final scene must deliver a payoff.
|
Scene 1 must hook the viewer in the first 2 seconds. The final scene must deliver a payoff.
|
||||||
|
|
||||||
@@ -1494,7 +1495,11 @@ def media_duration(path):
|
|||||||
|
|
||||||
def render_scene(s, image, audio, out, aspect):
|
def render_scene(s, image, audio, out, aspect):
|
||||||
w, h = (1080, 1920) if aspect == "9:16" else (1920, 1080)
|
w, h = (1080, 1920) if aspect == "9:16" else (1920, 1080)
|
||||||
dur = max(float(s["clip_seconds"]), media_duration(audio) + 0.6)
|
spoken = media_duration(audio)
|
||||||
|
if s.get("scene_timing", "narration") == "fixed":
|
||||||
|
dur = max(float(s["clip_seconds"]), spoken + 0.6)
|
||||||
|
else:
|
||||||
|
dur = max(2.5, spoken + 0.8)
|
||||||
frames = int(dur * 30)
|
frames = int(dur * 30)
|
||||||
vf = (
|
vf = (
|
||||||
f"[0:v]scale={w * 2}:{h * 2}:force_original_aspect_ratio=increase,crop={w * 2}:{h * 2},"
|
f"[0:v]scale={w * 2}:{h * 2}:force_original_aspect_ratio=increase,crop={w * 2}:{h * 2},"
|
||||||
|
|||||||
+2
-1
@@ -326,7 +326,8 @@ const FIELDS=[
|
|||||||
["ollama_timeout","Ollama timeout (seconds)","select:120|300|600|900","Max wait per Ollama request before retrying","g"],
|
["ollama_timeout","Ollama timeout (seconds)","select:120|300|600|900","Max wait per Ollama request before retrying","g"],
|
||||||
["aspect_ratio","Aspect ratio","select:9:16|16:9","","g"],
|
["aspect_ratio","Aspect ratio","select:9:16|16:9","","g"],
|
||||||
["target_seconds","Target length (seconds)","select:30|45|60|90|120|180","Split into scenes of the length below","g"],
|
["target_seconds","Target length (seconds)","select:30|45|60|90|120|180","Split into scenes of the length below","g"],
|
||||||
["clip_seconds","Seconds per scene","select:5|6|8|10|12","8 gives 7 scenes in a 60 second Short","g"],
|
["clip_seconds","Seconds per scene","select:5|6|8|10|12","Sets how many scenes the story has and how long each narration line is. 8 gives 7 scenes","g"],
|
||||||
|
["scene_timing","Scene timing","select:narration=Match the narration|fixed=Fixed length per scene","Match the narration moves to the next scene shortly after the voice finishes","g"],
|
||||||
["error_cooldown_minutes","Wait after error (minutes)","select:1|5|10|15|30|60","","g"]
|
["error_cooldown_minutes","Wait after error (minutes)","select:1|5|10|15|30|60","","g"]
|
||||||
];
|
];
|
||||||
const DAYS=[["mon","Mon"],["tue","Tue"],["wed","Wed"],["thu","Thu"],["fri","Fri"],["sat","Sat"],["sun","Sun"]];
|
const DAYS=[["mon","Mon"],["tue","Tue"],["wed","Wed"],["thu","Thu"],["fri","Fri"],["sat","Sat"],["sun","Sun"]];
|
||||||
|
|||||||
Reference in New Issue
Block a user