<div dir="ltr">I am likely going to create a simple program that allows users to create real time effects on using one or more source video files, and am requesting comments before I start. I'd like to know what other cross platform (Mac/Windows/Linux/Pi) programs exists that work as I am going to describe, and am also open to suggestions.<div><br></div><div>Use case scenarios:</div><div><ul><li>Fun video effects to display on a large home theater screen.<br></li><li>Programmable <a href="https://www.youtube.com/watch?v=CWI676b6hE8">neo pixel effects</a> based on video and or audio sources.<br></li><li>Picture in picture displays with 3D transforms and animation.</li><li>Custom detailed audio equalization and visualization.</li><ul><li>Easy reverb, echo, delay, flanger, chorus effects.</li></ul><li>Any other idea you have to either manipulate video and audio in real time, or forward data from video/audio to other external APIs such as Raspberry Pi GPIO pins.</li></ul></div><div><div>Here are the details of what I am thinking about its operation:</div><div><ul><li>Purely text based input.<br></li><li>Run from the command line with a Javascript file as the main script.<br></li><li>The program creates a full screen video player given input from the script file.<br></li><li>The script file can then alter the video and audio in real time as it plays. It can add effects such as mosiac, posterization, ascii matrix, mirroring/3D transforms, overlay text, color substitution or chroma key, etc. It can also put effect on audio track.<br></li><li>The script can load other script files, and call subroutines.</li><li>Your own custom GLSL fragment shaders implement the actual pixel operations.</li><li>Multiple video, image, and audio sources can be composited to one final video/audio stream.</li><li>The program will include may pre fabricated scripts with reusable subroutines and examples.</li></ul><div>The details of implementation include:</div></div><div><ul><li>The <a href="https://mpv.io">MVP video player</a> will be used to decode video files.<br></li><li>The <a href="https://www.libsdl.org">SDL media library</a> will be used to create a window and graphics context and audio mixer.</li><li>The MVP API gives access to video frames through an OpenGL frame buffer object. I assume it also has an audio API.</li><li>Javascript will come from the <a href="https://webkit.org/blog/7536/jsc-loves-es6/">JSC webkit</a> engine.</li><li><a href="https://www.khronos.org/opengl/wiki/Fragment_Shader">GLSL fragment shaders</a> will be connected to the rendering pipeline by user defined Javascript functions.</li></ul></div><div><br></div></div></div>