LED Hardware Hacking
For the LEDs, the goal was to have them sync with the video, in order to do this, I had to modify them so I could control them with custom software using a Raspberry Pi (zero 2w). 12v was hijacked from the LEDs controller, which was connected to common ground with the pi. Then 3 mosfets were connected, one for each color channel (G, R, B on the strip). The mosfets allowed decoupling of the 12v from the pi, which would break the GPIO which is 3.3v. The gate of the mosfets were connected to the pi's GPIO PWM pins, 12, 13 and 18. The source for the mosfets is ground and the drain goes to the actual LED strip.
TLDR; The LEDs were connected to the small computer, allowing them to be controlled with custom software later on.
Video Production
As for the video, the idea was to be peering through a window - the camera was setup in the corner, behind the door. Lighting was straight forward, some flashing, some green, some red. We had the fog machine going, in order to add some volume to the room. We had planned a general concept for the scenes, and got to recording. A bit of editing and shwazam - video done. (thanks Simon)
LED Programming
Now, my most favorite, yet the biggest annoyance. Nothing ever goes to plan, so the software for the LEDs went through multiple rewrites to work with what we had for the project.
The software was written in Zig, originally, ffmpeg was used to calculate colors for the LEDs, and pigs was used for hardware PWM control for the LEDs.
The device playing the video was meant to communicate to the Pi to get perfect sync in the lights, this was not possible due to system admin settings on Saskpoly devices preventing two different things.
1. Running unauthorized software without an admin account.
2. Serial communication over USB.
This led me to go with a more simple route, and sync the LEDs and video manually. Which was... a bit more tedious.
In a perfect world, the sync would be automatic, but again, those issues prevented this from working nicely. The final solution was to just have a text file which has the time in milliseconds, and the color for the LEDs.
Now, getting the LEDs and videos to stay in sync means having the correct duration before looping. VLC does not immediately start the video after finishing, so it was necessary to specify a slightly longer duration, the application takes a flag which is used to specify the length, so this was just trial and error.
Final Steps and Setup
This whole part happened relatively out of order, but the LEDs were setup while the rest of the decorations were being put up. This was pretty simple, just a matter of getting the computer, and the LED controller setup, the monitor on the front of the door, and the cables managed relatively well.