---
name: vid-meta
description: Inspect any video file's metadata — resolution, codec, fps, bitrate, duration, audio details, color space, encoder, container tags, GPS coords, creation date, file size. Pretty single-file view OR table view for a folder. Optional --json for machine-readable output. Pure ffprobe wrapper. Use when the user asks "what's the resolution / fps / bitrate of this", "inspect this video", "ffprobe", "metadata of this clip", or wants a quick quality audit before processing.
---


# vid-meta

Clean ffprobe metadata viewer. Pretty output for one file, table for a folder, JSON for tooling.

## Usage

Single file (pretty block):
```
python3 scripts/meta.py --input clip.mp4
```

Folder (table view of all videos):
```
python3 scripts/meta.py --input ./footage
```

Recursive folder scan:
```
python3 scripts/meta.py --input ./footage --recursive
```

One-line summary per file (folder mode):
```
python3 scripts/meta.py --input ./footage --brief
```

JSON dump (single file or folder, machine-readable):
```
python3 scripts/meta.py --input clip.mp4 --json
python3 scripts/meta.py --input ./footage --json > inventory.json
```

## Flags

- `--input PATH` (required) — video file OR folder of videos
- `--recursive` — recurse into subfolders (folder mode)
- `--json` — output raw probe data + file size as JSON
- `--brief` — one-line summary per file (folder mode)

## What it shows (pretty mode)

```
clip.mp4
  resolution: 1920x1080 (16:9)
  codec:      h264 (yuv420p)
  fps:        30.00
  bitrate:    8.4 Mbps
  duration:   00:01:23.45
  audio:      aac · 2ch · 44.1kHz · 192 kbps
  encoder:    Lavf60.16.100
  size:       87.3 MB
```

When present in container metadata, it also surfaces:
- creation date / `creation_time`
- GPS coords (`location` / `com.apple.quicktime.location.ISO6709`)
- color space / transfer / primaries (BT.709, BT.2020, etc)
- estimated quality tier (UHD / 1080p / 720p / SD) based on resolution + bitrate

## Folder table mode

```
file              res         codec   fps    dur       size     kind
clipA.mp4         1920x1080   h264    30.00  01:23.45  87.3 MB  1080p
clipB.mov         3840x2160   hevc    60.00  00:42.10  410 MB   UHD
beat.wav          —           pcm     —      02:14.00  23.1 MB  audio
```

## Requirements

- `ffprobe` on PATH (ships with ffmpeg)
- Python 3.8+
- No third-party packages

## Pairs well with

- `clip-trim` — audit before trimming
- `vid-rip` — verify what yt-dlp downloaded
- `whisper-srt` — confirm audio sample rate before transcription
- `clip-stitch` — diagnose mismatched resolutions/fps before concat
