$ show amiaopensource/vrecord
Vrecord is a bash-based CLI and GUI application for capturing analog and digital video signals to digital files, designed primarily for audiovisual archivists. It wraps ffmpeg-ma (a MediaArea fork of FFmpeg with Blackmagic DeckLink support) to capture from DeckLink devices, DV via FireWire, or audio-only inputs, and provides real-time monitoring through ffplay or mpv with configurable scopes (waveform, vectorscope, histograms, bit planes, etc.). The application generates preservation-oriented sidecar files including frame-level MD5 checksums, SCC closed caption files, QCTools XML reports, timecode logs, and optional access MP4 copies. Post-capture, it runs MediaConch policy checks, generates benchmark graphs with gnuplot, and can embed logs into Matroska containers. The codebase is monolithic, consisting of a single ~5000-line bash script (vrecord) that handles configuration (via gtkdialog), capture pipeline construction, and post-processing. Companion scripts include vtest for test signal output, vplay for playback with QC overlays, and cchex_to_display for real-time closed caption display. Dependencies are managed via Homebrew on macOS and Linux (including the AMIA Open Source tap). The project has been maintained for nearly a decade and is actively developed by a community of archivists and developers.
The LLM identified 2 files worth highlighting for reuse:
An mpv Lua script that provides an interactive quality control view with multiple scopes (waveform, vectorscope, histogram, bit planes, color matrix, etc.) controlled via keyboard shortcuts. It is fully self-contained, configurable through constants at the top of the file, and can be loaded by any mpv instance with `--script=qcview.lua`. The script demonstrates advanced use of mpv's filter chain API to dynamically swap between complex lavfi filter graphs based on user input, and includes OSD rendering for key binding help.
A standalone bash script that converts EIA-608 closed caption hex dumps (from ffmpeg's readeia608 filter) to readable text in real time. It uses a character lookup table (associative array) for the CEA-608 character set and implements a polling loop that reads the last 60 lines of an input file every 200ms, decodes pairs of hex bytes, and writes a scrolling 64-character buffer to an output file. This script can be reused independently of vrecord for live caption display or format conversion.