Skip to content

eetupitkane/footage-validator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

Footage Validator

A drag-and-drop tool that checks video files for structural corruption before you trust them in your archive or wipe the source media.

Works on Windows and macOS. One-click installer handles all dependencies.


The problem

You copy footage from a camera card using a verified transfer tool like Offshoot. Checksums match. Green lights everywhere. You wipe the card. Two weeks later in post, one of your files won't open. The MP4 is structurally broken — the camera or recording software crashed mid-write, and the file was already corrupted before it ever left the card.

Your transfer tool did exactly what it was supposed to: it copied the file bit-for-bit and confirmed the copy was perfect. The problem is that a perfect copy of a broken file is still a broken file.

Footage Validator catches what transfer tools can't. It runs ffprobe on every video file in a folder to verify the container is structurally valid — that the moov atom exists, the video stream is parseable, codec parameters are readable, and the file will actually play. If a recording was truncated, crashed, or written incorrectly by the capture device, this tool flags it immediately — while you're still on location and can reshoot.

How it works with your existing workflow

Transfer verification tools (Offshoot, Hedge, Silverstack, Shotput Pro) and Footage Validator cover different failure modes:

Failure type Transfer tool catches it Footage Validator catches it
Bit corruption during copy
Drive disconnected mid-transfer
Files missing after copy
Bit rot on archive over time ✅ (via MHL re-verify)
Camera wrote a broken file
Recording crashed, missing moov atom
Zero-byte or stub file on card
File exists but has no video stream

Recommended workflow at wrap:

  1. Copy card → destination using Offshoot (Source Verification mode for critical shoots)
  2. Run Footage Validator on the destination folder
  3. Both green → safe to wipe the card

Neither tool alone covers every failure mode. Together they do.

What it catches

  • Missing or corrupted MP4/MOV moov atoms
  • Truncated recordings (camera or software crashed mid-write)
  • Zero-byte or stub files
  • Files with no readable video stream
  • Containers that ffprobe cannot parse

Supported formats

MP4, MOV, MXF, AVI, MKV, M4V — scanned recursively through all subfolders.


Installation

Windows

Requirements: Windows 10 (1809+) or Windows 11 with winget available.

  1. Download the latest Windows release zip
  2. Unzip it
  3. Right-click Install Footage Validator.batRun as administrator
  4. The installer handles everything:
    • FFmpeg (via winget)
    • PowerShell 7 (via winget)
    • Validation script installed to %LOCALAPPDATA%\FootageValidator\
    • Validate Footage shortcut placed on your Desktop
  5. Drag any folder onto the Desktop icon to validate

macOS

Requirements: macOS 10.13 or newer.

  1. Download the latest macOS release zip
  2. Unzip it
  3. Double-click Install Footage Validator.command
    • First time: macOS may block it → right-click → Open → confirm
  4. Enter your password when Homebrew asks for sudo
  5. The installer handles everything:
    • Homebrew (if missing)
    • FFmpeg (via Homebrew)
    • Validation script installed to /usr/local/bin/validate_footage
    • Validate Footage.app placed on your Desktop
  6. Drag any folder onto the Desktop app to validate

Usage

Drag and drop (both platforms)

Drag a folder onto the Validate Footage icon on your Desktop. A terminal window opens showing live results:

===================================================================
 FOOTAGE VALIDATION
 Folder:   /Volumes/SHOOT_A/Footage
 Started:  2026-05-10 14:30:22
 Threads:  16
===================================================================

[  OK  ] A001_05101430_C001.mp4                h264  3840x2160  23.98fps  00:12:44
[  OK  ] A001_05101430_C002.mp4                h264  3840x2160  23.98fps  00:08:31
[ FAIL ] A001_05101430_C003.mp4
         moov atom not found
[  OK  ] A001_05101430_C004.mp4                h264  3840x2160  23.98fps  00:15:02

===================================================================
 SUMMARY
 Total scanned: 4
 Passed:        3
 Failed:        1
 Elapsed:       00:03
 Report:        /Volumes/SHOOT_A/Footage/validation_report_2026-05-10_1430.txt
===================================================================

A timestamped report is saved in the scanned folder as validation_report_YYYY-MM-DD_HHMM.txt.

Command line

Windows (PowerShell 7):

pwsh -ExecutionPolicy Bypass -File "$env:LOCALAPPDATA\FootageValidator\validate_footage.ps1" -Path "D:\Shoot\CardA"

# Custom thread count
pwsh -ExecutionPolicy Bypass -File "$env:LOCALAPPDATA\FootageValidator\validate_footage.ps1" -Path "D:\Shoot" -Throttle 16

macOS / Linux:

validate_footage /path/to/folder

# Custom thread count
validate_footage /path/to/folder 16

Performance

The validation runs multiple ffprobe instances in parallel (default: 8 threads, configurable). On a fast SSD with typical production footage:

  • ~100 files in under 10 seconds
  • ~1000 files in under 2 minutes

Adjust the thread count based on your storage speed. Use higher values (16) for fast NVMe/SSD, lower values (4) for USB card readers or network drives.


Origin story

This tool was built after a corrupted Varjo XR4 capture file — a missing moov atom on a client shoot — was discovered only after the source media had been wiped. The file had transferred and verified cleanly through Offshoot because the corruption existed at the source. Hours of debugging with FFmpeg, untrunc, and various recovery tools followed. The file was eventually recovered using Stellar Repair for Video with a reference clip from the same session, but the experience made clear that a structural validation step was missing from the ingest workflow.

Footage Validator exists so that never happens again.


Technical details

Under the hood, the tool runs ffprobe (part of the FFmpeg project) on each file with flags that check:

  • Whether the container can be opened and parsed
  • Whether at least one video stream exists
  • Whether codec parameters (codec name, resolution, frame rate, duration) are readable

This is a lightweight read operation — it does not decode or re-encode any video data. It reads just enough of the container structure to confirm the file is valid.


Customizing

The scripts are plain text and easy to modify:

  • Supported extensions — add or remove formats in the extensions list at the top of the script
  • Thread count — change the default parallel worker count
  • Report format — adjust what metadata gets logged per file

Uninstalling

Windows:

  1. Delete %LOCALAPPDATA%\FootageValidator\
  2. Delete Validate Footage.bat from the Desktop
  3. (Optional) winget uninstall Gyan.FFmpeg and winget uninstall Microsoft.PowerShell

macOS:

sudo rm /usr/local/bin/validate_footage
rm -rf "$HOME/Desktop/Validate Footage.app"

FFmpeg and Homebrew are left installed.


License

MIT — use it however you want.

About

Drag-and-drop video file integrity checker for production workflows. Catches corrupted containers, missing moov atoms, and broken recordings that transfer verification tools like Offshoot and Hedge won't flag. Windows + macOS.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors