I believe ffmpeg is already built with lavfi filter in the default distribution, log output can be json.
I'm currently running comparisons like so:
Code: Select all
systemd-run --user -u ffqm /usr/bin/docker run -i --rm -v /media/media:ro -v /tmp:/tmp ffmpeg-quality-metrics:latest ffmpeg -i 'reference.file.mkv' -i 'comparison.file.mkv -lavfi "[0:v]settb=AVTB,setpts=PTS-STARTPTS[ref]; [1:v]settb=AVTB,setpts=PTS-STARTPTS[cmp]; [cmp][ref]libvmaf=log_fmt=xml:log_path=/dev/null:model=path=/model/vmaf_v0.6.1.json:n_threads=4:feature=name=float_ms_ssim|name=ciede|name=cambi" -hide_banner -f null -
Final output looks something like:
Code: Select all
Jan 24 02:23:03 hostname docker[1266492]: [48.0K blob data]
Jan 24 02:39:40 hostname docker[1266492]: [48.0K blob data]
Jan 24 02:56:14 hostname docker[1266492]: [48.0K blob data]
Jan 24 03:12:39 hostname docker[1266492]: [48.0K blob data]
Jan 24 03:28:25 hostname docker[1266492]: [48.0K blob data]
Jan 24 03:34:52 hostname docker[1266492]: [25.2K blob data]
Jan 24 03:34:52 hostname docker[1266492]: video:26262kB audio:438128kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Jan 24 03:34:54 hostname docker[1266492]: [Parsed_libvmaf_4 @ 0x7925c80] VMAF score: 12.884485