105 pure black screen videos. Generated in 1.2 seconds.
The naive approach — encoding every file from scratch — takes 40 minutes. This tool does it in ~1.2 seconds. That's roughly 2000x faster.
The trick: encode once, stream-loop to any duration with zero re-encoding.
Just want the files? Skip the CLI. Download instantly at blackscreenvideo.com — free, no signup.
git clone https://github.com/forpix/black-screen-video-generator.git
cd black-screen-video-generator
bash generate.shDocker:
docker build -t bsvg .
docker run -v $(pwd)/output:/output bsvgDone. 105 files in ./output/.
5 resolutions. 7 durations. 3 formats. Every combination.
| 10s | 30s | 1min | 5min | 10min | 30min | 1hour | |
|---|---|---|---|---|---|---|---|
| 480p (854×480) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 720p (1280×720) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 1080p (1920×1080) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 4K (3840×2160) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 8K (7680×4320) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Each cell = 3 files: MP4 (H.264), WebM (VP9), MOV (H.264).
All files: 5 fps, yuv420p, no audio track.
The core insight: a 1-hour black video is just a 1-second black video looped 3600 times. The pixels are identical. There's nothing to re-encode.
Phase 1 — Build 15 base files (1 second each): 5 resolutions × 3 formats.
Phase 2 — Loop each base file to every target duration using FFmpeg's -stream_loop with -c copy. No re-encoding. Just byte-level concatenation.
That's why it's fast. The actual encoding work is 15 one-second clips. Everything else is a copy operation.
| Script | Time | Strategy |
|---|---|---|
generate.sh |
~1.2s | encode 15 base clips, stream-loop the rest |
generate-full.sh |
~40min | full encode for every file (baseline) |
generate-full.sh exists purely as a benchmark comparison. You'll never need to run it.
bash validate.sh ./outputThis isn't a loose sanity check. For each of the 105 files, it verifies:
- Resolution matches the filename label exactly
- Duration is within ±1 second of the target
- Codec is correct (H.264 for MP4/MOV, VP9 for WebM)
- Zero audio streams
- File size is non-zero
- Pixel-level black frame check at 5%, 50%, and 95% timestamps
All 105 must pass. Any failure exits non-zero.
- Testing — Video player QA, streaming pipeline validation, CI/CD fixtures
- Display diagnostics — Burn-in detection, dead pixel testing
- Content creation — Black screen placeholders, meditation/sleep videos
- Development — Placeholder assets that behave like real video files
Don't want to run scripts? Grab the files from Releases.
Need 4K/8K or prefer browser downloads? → blackscreenvideo.com
MIT