Professional video control systems can be quite expensive. This project aims to make a simple system capable of playing back SD video for live performances. This tool could help musicians and other artists make responsive projections for live or installation pieces.
The system will consist of a control server, human interface device (HID), and a playback server. The control server will accept Open Sound Control (OSC) commands and output video via Real-time Transmission Protocol (RTP). The HID will output OSC commands, and the playback server can be anything that can decode an RTP stream (eg. VLC).
The components can be distributed across a network or local to one machine. In the example diagram, the video files are on the server which is running the pyjector software. OSC commands are sent through the network. The client machine is running VLC and is set to decode the RTP stream from the server. This could be achieved on one machine using the loopback interface as well.
Create a human interface device capable of sending OSC commands:
- Functions: Play/Pause, Forward/Reverse, Tap Tempo, Next/Prev, CUE#, etc...
- Output through ethernet, wifi, or usb.
- Could be a python script to capture keystrokes, or a smartphone app, or raspberry pi/arduino/esp8266
Create a server application:
- Functions: Load video files, output RTP
- Possibly Python wrapper for gstreamer
- Stream 640x480 mp4 with sub 50ms latency
- Switch video cues and change playback speed on the fly
Everything could be running on a single computer or distributed across a LAN. For optimal streaming latency probably will need dedicated network, either router or loopback interface.