# Swarm Derby launch trailer

## Delivery

- `trailer.mp4`: 30.000 seconds, 1920×1080 at 30 fps (900 frames), H.264 High profile, yuv420p, AAC LC stereo at 48 kHz; MP4 fast start enabled.
- `poster.png` and `stills/01.png`–`stills/04.png`: 1920×1080 PNG images from the real capture, with title and site address added to the poster.
- Audio: original CC0 instrumental synthesized by `build.py`; no voice or game sound effects.

## Limitations

The footage shows practice mode only. No wallet was connected and no live transaction was recorded. The leaderboard is the real snapshot visible during capture and can differ on a later visit. The browser screencast averaged 36.95 fps and was sampled into a 30 fps edit; slow motion, zooms and a static end card create intentional repeated frames. The rendered video uses only the synthesized music because the PNG capture contains no game audio.

Real local Chromium capture of unmodified index.html. 1920×1080, device scale 1; lossless CDP PNG screencast; actual frame-rate statistics below. Normal Space key input, read-only state observation. No wallet connected or transactions sent. Live RPC board rendered without alteration.

Recreate: `node capture.mjs` then `python3 build.py`. Requirements: Node 18+, Python 3, Chromium and FFmpeg with libx264/libass. Playwright core is vendored; set CHROMIUM_PATH for another browser. Intermediates are under /tmp and are not delivered. Gameplay randomness and live board change on reruns; the editor automatically selects the longest captured homer.

Original instrumental composed and synthesized by build.py, no samples or voices. Source: build.py; licence: CC0-1.0 (dedicated by this submission). WAV SHA-256: `2552d902cdd7bf47efddc1d22cc65a5aded9dd53b33cd4c9f9a04d3adaac6991`. Fade across final three seconds.

## Shot list

Output start | Duration | Source timestamp | Playback rate | Crop
---|---|---|---|---
0.00 | 0.80 | 86.363 | 1.00 | field
0.80 | 0.50 | 87.163 | 0.45 | field
1.30 | 1.20 | 87.363 | 2.00 | field
2.50 | 0.50 | 89.113 | 1.00 | field
3.00 | 2.00 | 83.412 | 1.00 | meters
5.00 | 2.00 | 86.363 | 0.50 | field
7.00 | 2.00 | 83.812 | 1.00 | meters
9.00 | 1.50 | 87.163 | 0.50 | field
10.50 | 1.50 | 88.913 | 0.50 | field
12.00 | 2.00 | 86.563 | 0.60 | pitcher
14.00 | 2.00 | 87.663 | 1.00 | feed
16.00 | 2.00 | 101.175 | 1.00 | board
18.00 | 2.00 | 101.475 | 0.70 | board
20.00 | 2.00 | 98.501 | 1.00 | board
22.00 | 2.00 | 1.000 | 0.80 | controls
24.00 | 2.00 | 98.701 | 0.70 | board
26.00 | 4.00 | 88.913 | 0.20 | field

Selected real homer: 519 FT. Capture: 3909 PNG frames over 105.763 seconds, average 36.95 fps. Render is 30 fps.

## ffprobe (real output)

```json
{
    "streams": [
        {
            "index": 0,
            "codec_name": "h264",
            "codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
            "profile": "High",
            "codec_type": "video",
            "codec_tag_string": "avc1",
            "codec_tag": "0x31637661",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "pix_fmt": "yuv420p",
            "level": 40,
            "chroma_location": "left",
            "field_order": "progressive",
            "refs": 1,
            "is_avc": "true",
            "nal_length_size": "4",
            "id": "0x1",
            "r_frame_rate": "30/1",
            "avg_frame_rate": "30/1",
            "time_base": "1/15360",
            "start_pts": 0,
            "start_time": "0.000000",
            "duration_ts": 460800,
            "duration": "30.000000",
            "bit_rate": "995973",
            "bits_per_raw_sample": "8",
            "nb_frames": "900",
            "extradata_size": 47,
            "disposition": {
                "default": 1,
                "dub": 0,
                "original": 0,
                "comment": 0,
                "lyrics": 0,
                "karaoke": 0,
                "forced": 0,
                "hearing_impaired": 0,
                "visual_impaired": 0,
                "clean_effects": 0,
                "attached_pic": 0,
                "timed_thumbnails": 0,
                "non_diegetic": 0,
                "captions": 0,
                "descriptions": 0,
                "metadata": 0,
                "dependent": 0,
                "still_image": 0
            },
            "tags": {
                "language": "und",
                "handler_name": "VideoHandler",
                "vendor_id": "[0][0][0][0]",
                "encoder": "Lavc60.31.102 libx264"
            }
        },
        {
            "index": 1,
            "codec_name": "aac",
            "codec_long_name": "AAC (Advanced Audio Coding)",
            "profile": "LC",
            "codec_type": "audio",
            "codec_tag_string": "mp4a",
            "codec_tag": "0x6134706d",
            "sample_fmt": "fltp",
            "sample_rate": "48000",
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "initial_padding": 0,
            "id": "0x2",
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/48000",
            "start_pts": 0,
            "start_time": "0.000000",
            "duration_ts": 1440000,
            "duration": "30.000000",
            "bit_rate": "195487",
            "nb_frames": "1408",
            "extradata_size": 5,
            "disposition": {
                "default": 1,
                "dub": 0,
                "original": 0,
                "comment": 0,
                "lyrics": 0,
                "karaoke": 0,
                "forced": 0,
                "hearing_impaired": 0,
                "visual_impaired": 0,
                "clean_effects": 0,
                "attached_pic": 0,
                "timed_thumbnails": 0,
                "non_diegetic": 0,
                "captions": 0,
                "descriptions": 0,
                "metadata": 0,
                "dependent": 0,
                "still_image": 0
            },
            "tags": {
                "language": "und",
                "handler_name": "SoundHandler",
                "vendor_id": "[0][0][0][0]"
            }
        }
    ],
    "format": {
        "filename": "artifacts/trailer.mp4",
        "nb_streams": 2,
        "nb_programs": 0,
        "format_name": "mov,mp4,m4a,3gp,3g2,mj2",
        "format_long_name": "QuickTime / MOV",
        "start_time": "0.000000",
        "duration": "30.000000",
        "size": "4502800",
        "bit_rate": "1200746",
        "probe_score": 100,
        "tags": {
            "major_brand": "isom",
            "minor_version": "512",
            "compatible_brands": "isomiso2avc1mp41",
            "encoder": "Lavf60.16.100"
        }
    }
}

```

## QC (real output, detector events and loudness summary)

```text
[freezedetect @ 0x5571a17db940] lavfi.freezedetect.freeze_start: 14
[freezedetect @ 0x5571a17db940] lavfi.freezedetect.freeze_duration: 1.3
[freezedetect @ 0x5571a17db940] lavfi.freezedetect.freeze_end: 15.3
[freezedetect @ 0x5571a17db940] lavfi.freezedetect.freeze_start: 26
Summary:

  Integrated loudness:
    I:         -14.0 LUFS
    Threshold: -24.1 LUFS

  Loudness range:
    LRA:         0.6 LU
    Threshold: -33.9 LUFS
    LRA low:   -14.2 LUFS
    LRA high:  -13.6 LUFS

  True peak:
    Peak:       -1.2 dBFS

```

Size: 4502800 bytes. Contact sheet generated every 0.5 seconds at /tmp/swarm-edit/contact-sheet.png. The contact sheet, poster, four stills, and a full-size end-card frame were visually reviewed after rendering.
