Scene 01Take 1●
Start with the finished compilation and its source files
To compile video messages, review each original, choose a story order, trim complete thoughts, balance the sound and inspect the exported file. This worked example turns three padded source clips totaling 46 seconds into a 31.5-second finished video, including an opening and an ending.
This is a fictional teaching project. The pictures are AI-generated, the three voices are synthetic and the contributor visuals are name cards. No real participant appears on camera. The files demonstrate editing decisions and do not represent an actual birthday collection.
Download the source and reproduction pack, edit cutlist CSV, English SRT captions or descriptive transcript. The pack contains actual source clips, original images, prepared cards, map-source credits and a runnable FFmpeg assembly script with caption generation; it is not a native editor project.
Scene 02Take 1●
Review the originals before arranging them
The fictional files arrive as Rae’s phone-named export, Nora’s “final” file and Owen’s generic phone export. The filenames do not tell the story order. Keep those originals unchanged and write a review note beside each one: speaker, subject, approval, audio condition and the sentence you intend to keep.
| Arrival order | Source file | Original length | Review finding |
|---|---|---|---|
| 1 · Rae | compile-source-VID_0392.mp4 | 14 seconds | A closing wish; includes spare time around the speech |
| 2 · Nora | compile-source-birthday-final-v2.mp4 | 15 seconds | An opening memory; do not treat “final” as editorial approval |
| 3 · Owen | compile-source-phone-export.mp4 | 17 seconds | A specific picnic story; deliberately quieter source audio |
The voices and quiet padding were created for this lesson. In a real collection, check whether a file is complete before editing it. An absent preview, an unreadable source and a successfully submitted contribution are different states.
Use the upload recovery guide for failed uploads and the contributor request guide for missing context or permission. Editing cannot resolve an unanswered approval question.
Scene 03Take 1●
Arrange by meaning: memory, story, wish
Nora opens with a familiar shared routine. Owen gives the middle a small incident: a rainy picnic that became a favourite afternoon. Rae closes with a wish for the next year. That order gives each message a different role and avoids three consecutive greetings.
| Finished time | Material | Purpose |
|---|---|---|
| 0:00.0–0:03.0 | title | Name the recipient and occasion |
| 0:03.0–0:10.5 | Nora | Opening memory |
| 0:10.5–0:20.0 | Owen | A shared story |
| 0:20.0–0:28.5 | Rae | Closing wish |
| 0:28.5–0:31.5 | ending | One closing card |
The opening lasts three seconds and the ending lasts three seconds. The kept messages total 25.5 seconds, so the result is 31.5 seconds. Arrival order and original file length do not determine how much screen time someone deserves.
Scene 04Take 1●
Trim the padding while preserving each whole sentence
| Speaker | Keep from source | Kept length | Source frames at 24 fps |
|---|---|---|---|
| Nora | 0:01.5–0:09.0 | 7.5 seconds | 36 to 216, out point excluded |
| Owen | 0:02.5–0:12.0 | 9.5 seconds | 60 to 288, out point excluded |
| Rae | 0:01.5–0:10.0 | 8.5 seconds | 36 to 240, out point excluded |
The in points leave half a second before the synthetic speech begins. Each out point falls after the complete generated utterance. The cuts remove 20.5 seconds of deliberate source padding. Compare the original with the trimmed clip when checking a boundary.
For a real speaker, play the boundary rather than copying these numbers. Cut after the meaning is complete. Keep a laugh, reaction or pause when it contributes to the message. If a middle sentence must be removed, check that the edit preserves the speaker’s meaning and that the visual cut is acceptable.
Scene 05Take 1●
Balance sound and check the encoded result
The three source clips use different gains. The runner first measures each kept interval, then applies two-pass loudness processing, a limiter and a final 0.8 gain for encoding headroom. It uses lossless PCM sound in intermediate files and creates AAC once in the final export. These are the tested sample settings, not a promised loudness result for every recording.
The first assembly exposed an excessive peak and small accumulating audio offsets. The final processing was corrected and the actual exports were rechecked. Compare the delivered file with the source speech, because a level setting or a successful export alone does not prove the sound survived correctly.
For your own clips, listen across every join at a comfortable volume. If a quiet speaker requires a large boost, check for amplified room noise as well as loudness. Leave music out until the speech works; then use only audio you may share.
The caption and accessibility guide covers captions and text alternatives. The sample provides selectable English captions, an SRT file and a descriptive transcript.
Scene 06Take 1●
Export from the real cutlist
- Extract the input pack. Keep its project.json, three source clips, prepared cards and assembler together.
- With Python 3 and FFmpeg on PATH, run: python assemble-birthday.py. The script trims the listed source intervals, processes sound and joins the resulting parts locally.
- Open message-compilation-demo.mp4. Check the opening, Nora → Owen → Rae order, all three joins and the final card.
- Check captions and listen again after transfer to the intended viewing device. Keep the final file and the original recordings separately.
The same pack also builds a photo-bearing birthday slideshow and a map-gift variant. Those are separate edits with different time budgets. The compilation above contains just the three kept message clips plus opening and ending cards.
For the photo-and-message balance, use the birthday slideshow example. For place context, use the birthday map gift.
Scene 07Take 1●
References and test scope
Settings were checked on 24 October 2026 in FFmpeg 8.1.1. Its official loudness-normalization documentation and limiter documentation explain the filters used by the supplied runner. The actual media, cutlist and complete runner are in the linked input pack.
This demonstrates a real local edit from actual files. It does not test hosted contributor uploads, show real performances or claim a human listening review. For a personal compilation, secure participant approval and review the final audience and sharing method before release.
End card
That’s a wrap
Helpful answers
Frequently asked questions
Why is the compilation 31.5 seconds when its sources total 46?
The cutlist keeps 25.5 seconds of complete message clips after removing deliberate padding, then adds three-second opening and ending cards.
Is the arrival order the right editing order?
Not necessarily. The sample arrives Rae, Nora, Owen and is edited Nora, Owen, Rae so the opening memory, shared story and closing wish follow one another.
Does normalization guarantee good sound?
No. Inspect the encoded output, check every join and listen to the actual viewing copy. The sample records its processing and verifies delivered signals rather than relying on the settings alone.



