Repository navigation
Add the Remotion project for the film Export before 16 October - #170
Merged
Merged
Conversation
tools/films is a Node project outside Whiteboard.sln that renders the 30-second campaign film in four shapes (16:9, 1:1, 4:5, 9:16) and a poster from one composition. The layout follows the aspect ratio and keeps text, callouts, and the end card inside each platform's safe area. The four screen captures, the voice, and the music bed are not committed. Until a capture exists in captures/, the film shows a labelled placeholder in its place, and until audio/film1-vo.mp3 exists it carries a silent track. Beat start times are in src/film1/beats.json, so aligning the film to the voice is an edit of that file. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
scripts/elevenlabs.mjs reads the key from ELEVENLABS_API_KEY, writes the voice track from the script in film1-vo.txt and an instrumental bed into audio/, and moves the beats in beats.json to where each phrase starts in the voice track. The README says which key permissions it needs. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The read covered Settings, Export, Zip in 2.5 seconds, and the capture behind it shows three clicks and a save dialog, so the voice text gets a Read section with short breaks between the steps. The beat starts now follow the first word of each phrase in the generated track, found with ElevenLabs forced alignment. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The Read section spells SQLBI the way it is said, so the on-screen script stays as written while the generated voice says Sequel B I. The voice command takes --speed for a read that runs past the film. The beats follow the chosen read (Eric, eleven_multilingual_v2, 27 s). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ddress The voice put a pause between the two parts of Sequel B I in the sentence and none in the address, so the Read section uses a different spelling in each place. The beats follow the new read. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The four recordings of 27 September are 4K at 30 fps and longer than the shot list, so each capture now starts where its action starts and plays at the rate that fits its beat. The callout boxes were read from the frames: the gear, the Export menu item, and the Zip (HTML+JSON) button. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The new recordings show one board, Memory, in all four captures, and their video tracks are shorter than their audio, so each trim now ends inside the video track. C3 reads 1.4 to 8.0 s at 1.25x, because the beat gives it 5.3 s and the board is on screen from 5.8 s of the capture. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The export deadline applies to personal accounts, because work and school boards stay in Teams and on the web. The first caption names the account so the film's audience is stated before the deadline is. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
tools/filmsis a Remotion project that renders the 30-second film "Export before 16 October", the third part of the launch campaign. It tells people who use the Microsoft Whiteboard app with a personal account to export each board before the app retires on 16 October 2026, and shows SQLBI Whiteboard opening the exported ZIP. Liketools/AssetGenerator, it sits outsideWhiteboard.sln.Remotion is used under its free license, because SQLBI has fewer than four employees. The README records this with the license URL.
Rendering
There is one script per rendition:
render:16x9,render:1x1,render:4x5,render:9x16, andrender:poster. Each shape renders at twice its size intoout\master(3840 × 2160 for 16:9), and ffmpeg scales it down to the rendition. Rendering runs on Windows, because the type is Segoe UI Variable Display from the installed fonts. Remotion's own Chrome Headless Shell finds the real font;out\stills\font-check.pngmeasures it against Segoe UI Variable Text, Segoe UI, and a monospace fallback.The four shapes come from one composition. A landscape frame puts the text in a navy panel on the left, as the social card does. A square or portrait frame puts the window at the top and the text in a navy panel below it.
Captures, voice, and music
tools\films\captures\under the names in the README's shot list (C1 to C4). Until a file is there, the film shows a navy placeholder with the capture's name and what it will show.src/film1/captures.tssets where the film starts reading each capture, its speed, and where the numbered callouts sit. The callout positions are estimates for a 2560 × 1440 capture at 150 % scaling, so they need checking against the real captures.tools\films\audio\film1-vo.mp3.audio/film1-vo.txtholds the script to paste into ElevenLabs and the phrase each beat covers. Until the file exists the film carries a silent track of the same length.src/film1/beats.json, so aligning the film to the voice is an edit of that file. The README gives the ffmpeg command that lists the pauses between phrases.tools\films\audio\film1-bed.mp3. It plays 22 dB below the voice and fades out under the end card. No music was present, so these renders have none.Captures, audio files,
node_modules, and everything underoutare gitignored.Renditions
These were rendered with the placeholders and the silent track, so the files will grow once real captures are in.
film1-16x9.mp4, 1920 × 1080film1-1x1.mp4, 1080 × 1080film1-4x5.mp4, 1080 × 1350film1-9x16.mp4, 1080 × 1920film1-poster.jpg, 1920 × 1080Each video is H.264 High, yuv420p (limited range), 30 fps, 900 frames, with an AAC track at 128 kbps and the index at the start of the file. ffprobe reports 30.000 s for the file, the video, and the audio, and the audio starts at 0 s. The review stills at 2, 6, 10, 14, 20, 25, and 29 s were checked for every shape: text inside the safe area, nothing clipped, and the font is Segoe UI Variable Display.
🤖 Generated with Claude Code