pixop / video-compare

Split screen video comparison tool using FFmpeg and SDL2
GNU General Public License v2.0
889 stars 41 forks source link

Allow .vpy inputs #31

Closed banjaminicc closed 11 months ago

banjaminicc commented 1 year ago

As the topics ffmpeg should be able to handle .vpy quite easily so it should be possible?

thanks

jonfryd commented 1 year ago

Sorry for my ignorance, but are .vpy files for VapourSynth?

I have never used .vpy in general and neither of the FFmpeg builds on my machine comes with a native .vpy demuxer (ffmpeg -demuxers).

I'm open to pull requests.

jonfryd commented 11 months ago

As the topics ffmpeg should be able to handle .vpy quite easily so it should be possible?

thanks

I've made partial progress in enabling .vpy support for video-compare on my Mac by allowing a specific demuxer (vapoursynth in this case) to be selected on the command line for both videos. However, I'm uncertain about our ability to create Windows release builds because VapourSynth requires a functional Python environment, and the FFmpeg shared libraries we depend on for the Windows build lack VapourSynth support.

If you happen to be compiling video-compare on your own, this issue won't pose a problem, naturally. Which platform are you currently using and how are you installing the tool, @banjaminicc?

jonfryd commented 11 months ago

Assuming you are able to build the software yourself and are using an FFmpeg build compiled with --enable-vapoursynth, I've now pushed a couple of commits to the master branch that allow you to execute VapourScript .vpy files like:

    ./video-compare --left-demuxer vapoursynth  --right-demuxer vapoursynth script1.vpy script2.vpy

Cheers!

jonfryd commented 11 months ago

There's a different way using a pipe that doesn't necessitate FFmpeg to be built with --enable-vapoursynth. You can use recent release builds of VapourSynth and video-compare like this (no DIY compilation required):

    vspipe -c y4m script.vpy - | video-compare pipe: video2.mp4

The downsides of this approach are that backward seeking is not supported, long forward skips are impractical and only a single VapourScript processed video can be involved in the comparison, naturally. For some use cases it might be OK, though.