Reels: fix steppy fade (fps before fade) and ease the expression bump

The fade looked steppy/low-frame-rate because the filtergraph normalized
fps AFTER the fade filters: the brightness ramp was sampled at the looped
still's coarse input cadence, then duplicated up to 30fps. Move fps ahead
of the fades, pin the still's input framerate (-framerate), and force CFR
output (-r) so the dip ramps across a full 30 frames and plays steadily.

Ease narration expressiveness from 0.7 to 0.6 (still tunable via
REEL_TTS_EXAGGERATION). Bump RENDER_VERSION so existing reels re-render.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Cameron Cordes
2026-06-12 23:20:52 -04:00
parent 7715a7a905
commit 740fc4d841
2 changed files with 33 additions and 7 deletions
+5 -5
View File
@@ -180,17 +180,17 @@ fn finish_job(
/// Render version: bump to invalidate every cached reel after a rendering /
/// scripting change that should produce a fresh result.
const RENDER_VERSION: u32 = 2;
const RENDER_VERSION: u32 = 3;
/// Narration expressiveness — Chatterbox's `exaggeration` knob. A modest bump
/// over the ~0.5 default warms up otherwise-flat narration; tune via
/// `REEL_TTS_EXAGGERATION` (0.252.0).
/// Narration expressiveness — Chatterbox's `exaggeration` knob. A slight bump
/// over the ~0.5 default warms up otherwise-flat narration without over-acting;
/// tune via `REEL_TTS_EXAGGERATION` (0.252.0).
fn reel_tts_exaggeration() -> f32 {
std::env::var("REEL_TTS_EXAGGERATION")
.ok()
.and_then(|s| s.trim().parse::<f32>().ok())
.filter(|x| x.is_finite())
.unwrap_or(0.7)
.unwrap_or(0.6)
}
/// Cache key over everything that determines *which* media and *how* it's