video-to-4k · git:20260827.d2b68b3 · 2026-08-27 · sha256 d04543144caf4d47
video-to-4k git:20260827.d2b68b3A
Immutable. This exact content is served forever at /api/v1/blob/d04543144caf4d47.
---
name: video-to-4k
description: >-
Upscales a single low-resolution video to 4K with Video2X (Real-ESRGAN), then
encodes to unified 3840×2160 H.265 Main10 40Mbps + AAC 320kbps MP4. Source frame
rate is preserved (no fps=60 duplication, no RIFE). Already-4K sources skip
Video2X and go straight to FFmpeg. Use when the user wants video-to-4k, 4K
upscale, UHD export, Video2X, Real-ESRGAN, H.265 Main10, or convert an SD/HD
clip to 4K.
---
# Video to 4K
Convert a supported video to a **unified 4K master**:
| Spec | Value |
|------|-------|
| Resolution | 3840×2160 |
| Frame rate | **Source fps kept** (no `fps=` filter, no RIFE) |
| Video | H.265 Main10 (`libx265`, `yuv420p10le`) |
| Video bitrate | 40 Mbps |
| Audio | AAC 320 kbps |
| Container | MP4 (`.mp4`, `hvc1` tag) |
## Pipeline
1. **Probe** with ffprobe (width, height, fps, audio).
2. **Already 4K?** (`width �?3840` and `height �?2160`) �?skip Video2X.
3. **Below 4K** �?[Video2X](https://github.com/k4yt3x/video2x) Real-ESRGAN upscale (scale 2 or 4) to intermediate under `video-to-4k/upscaled/`.
4. **Always** FFmpeg final encode �?`video-to-4k/` at the unified specs above.
## Rules
When this skill applies, read and follow [skill-dependency-manager](../skill-dependency-manager.md) �?run scripts as documented, install missing tools into `.dependency/`.
- Run `convert.py` through **`.dependency/python/python`**. Never use host `python` / `ffmpeg` / `video2x`.
- **Never overwrite sources.** Outputs go under `video-to-4k/` (final) and `video-to-4k/upscaled/` (Video2X intermediate).
- Use the bundled script �?do not hand-write equivalent `video2x` / `ffmpeg` commands.
- **One file per run** �?pass `--video` with a single file; repeat for each clip in a batch.
## Setup (first run)
### FFmpeg + Python
Populate `ffmpeg` and `python` under `.dependency/` per skill-dependency-manager.
### Video2X (CLI)
Download the **CLI** release (not the Qt6 installer) from [video2x releases](https://github.com/k4yt3x/video2x/releases/latest) and extract to `.dependency/video2x/`:
| Platform | Release asset |
|----------|---------------|
| Windows | `video2x-windows-amd64.zip` �?`video2x.exe` |
| Linux | `Video2X-x86_64.AppImage` (or distro package) �?register as `bin` |
Register in `.dependency/manifest.json`:
```json
"video2x": {
"populated": true,
"bin": ".dependency/video2x/video2x.exe"
}
```
Use `video2x` (no `.exe`) or the AppImage path on Unix. Requires a **Vulkan** GPU and AVX2 CPU. Docs: [Command Line](https://docs.video2x.org/running/command-line.html).
## Quick Start
```bash
.dependency/python/python .ai/video-to-4k/convert.py --video path/to/clip.mp4
```
Example:
```
assets/video/clip.mp4
�?assets/video/video-to-4k/upscaled/clip.mkv (Video2X, only if below 4K)
�?assets/video/video-to-4k/clip.mp4 (final master)
```
Already-4K source �?only `video-to-4k/clip.mp4` (FFmpeg only).
Anime / cartoon content (Real-ESRGAN anime model):
```bash
.dependency/python/python .ai/video-to-4k/convert.py --video clip.mp4 --anime
```
## Defaults
| Setting | Default | Notes |
|---------|---------|-------|
| Upscaler | Real-ESRGAN `realesrgan-plus` | General / live-action |
| `--anime` | `realesr-animevideov3` | Anime / illustration |
| Scale | Auto 2 or 4 | Smallest factor that meets or exceeds 4K |
| Intermediate | High-bitrate HEVC MKV in `video-to-4k/upscaled/` | Kept for re-encode; delete manually or `--clean-upscaled` |
| Final | Always re-encode | Even if source already matches specs |
## Common Flags
`--video` · `-o` / `--output` · `--anime` · `--gpu` · `--clean-upscaled`
```bash
.dependency/python/python .ai/video-to-4k/convert.py --video clip.mp4
.dependency/python/python .ai/video-to-4k/convert.py --video clip.mp4 --gpu 0 --clean-upscaled
.dependency/python/python .ai/video-to-4k/convert.py --video clip.mp4 -o out/clip.mp4
```
**Never overwrite source files.** Input must be a single video file (`--video`), not a directory. Supported inputs: `.mp4`, `.mkv`, `.mov`, `.avi`, `.webm`, `.wmv`, `.flv`, `.m4v`, `.mpeg`, `.mpg`, `.ts`, `.mts`, `.m2ts`, `.3gp`, `.ogv`.
## Agent Notes
1. Use the bundled script only.
2. Missing Python / FFmpeg / Video2X �?populate `.dependency/`, set `populated: true`, retry the same command.
3. Tell the user where `video-to-4k/` (and `video-to-4k/upscaled/` if used) outputs are; they swap assets manually.
4. Default model is **general** (`realesrgan-plus`). Pass `--anime` for anime/cartoon.
5. Do **not** force fps. Keep the source frame rate. Need 60fps interpolation �?**video-to-60fps** first (RIFE at source resolution).
6. Pipeline / FFmpeg / Video2X details: [reference.md](reference.md)
## Tests
From repo root:
```bash
.dependency/python/python .ai/video-to-4k/test_convert.py
```
Manual CLI examples: [cli/video-to-4k.md](../../../cli/video-to-4k.md)