A clean and simple graphical user interface for Netflix's VMAF video comparison algorithm.
VMAF is extremely useful for comparing the perceptual quality of a compressed video to its source/reference, but the command to run it is often long and annoying to write. This program offers a reproducible way of running VMAF for multiple video files, with additional quality-of-life features.
Important
This program requires access to the ffmpeg and ffprobe commands, which can be downloaded from the FFmpeg website and added to the system PATH variable. FFmpeg is also required to have libvmaf included. A start-up check is performed when this program is launched to ensure it can access these commands.
- Select
referenceanddistortedvideo files to calculate their VMAF score - Score calculated without decompressing the videos to
yuvfiles- FFmpeg allows passing the video stream to VMAF without decompressing it to disk first, greatly reducing storage requirements
- Fast CPU-based processing
- Selectable VMAF models (
vmaf_v0.6.1,vmaf_4k_v0.6.1,vmaf_v0.6.1neg,vmaf_4k_v0.6.1neg)- Information button to show details about which model is best suited for which situation
- Live progress updates
- Ability to keep the raw FFmpeg
jsonoutput after the calculation has completed - Graphing VMAF scores across the duration of the video
- Hover over the graph to display a tooltip of the hovered frame number and its score
- Compare the same frame between reference and distorted videos with an image slider
- Enter the desired frame number and move the slider back and forth over the image to transition between reference and distorted frames
This program is built using the Go programming language and the Fyne UI framework. To setup a development environment, you'll need to install:
- Go
- A C compiler (w64devkit, Cygwin, MSYS2, or similar)
- Fyne's tooling
- Can be installed with
go install fyne.io/tools/cmd/fyne@latest
- Can be installed with
- (Optional) UPX
- Fyne projects can be large when compiled. Not necessary, but nice to have
Clone this repository:
git clone https://github.com/odddollar/VMAF-GUI.git
cd VMAF-GUIRun for testing/development with:
go run .Package for release with:
fyne package --release(Optional) Use UPX to transparently compress the executable:
upx --ultra-brute "VMAF GUI.exe"
