From what I read WS2811 LED Strips aren't individually addressable. A group of 3 LEDs are treated as a pixel so I'm not sure how you would go forward with that.
For getting a video on the LEDs you'd could use multiple strings of 1s and 0s with each string representing the states of all the LEDs at a given point in time. There are two ways you can do this. If you think you will be changing the video often, you should use the first method. If your use case is to display a simple drawing, message, or animation which you can easily make, you should use the second method.
Creating a python script to convert a video to a bunch of 0s and 1s:
- Convert an mp4 file with something like FFmpeg to individual images.
- For every image delete the next n images using something like os to reduce the fps so that the data won't exceed the mega's memory.
- If you're planning on using short videos with fewer frames per second like 10s and 3fps use an online tool like this and skip the next 2 steps.
- Assuming you're using a 33 x 18 grid of LEDs, compress the images to 33 by 18 pixels with something like PIL.
- Convert the multiple images (594 pixels) to strings of 594 1s or 0s. You can use PIL to help you get the RGB values of individual pixels. Darker colours (the value of any of the r, g, and b values > 256/2) are assigned a value of 1 while the lighter pixels have a value of 0.
Using Gimp or similar software:
- Create a new image with a 33 x 18 resolution.
- Go to the pencil tool and change the Size to 1, the Hardness and Force to 100, and the Colour to black.
- Create your first image with the pencil. Once you're done, make a new layer and create the next frame.
- Once you've finished with all the frames, you can export each layer as an image which you can convert to 0s and 1s using this or something similar.
An Example:
Original Image (32 x 32):

Output:

Once you've got those strings from using either of those methods, you can either copy and paste them into your program for the Mega or, If you're using a Pi, add a script in the Pi that sends these strings to the Mega. In the loop function of the Mega, you'd have a for loop that iterates through the different strings. The loop would tell the strips which LEDs to turn on and wait for a small amount of time before switching to the next frame.
Note: By strings I mean a bunch of 0s and 1s. If you have a 16 x 9 grid of LEDs, then you would have strings of 144 0s and 1s that would represent the values of the LEDs at a given frame.
the user would insert the video file name as a variable
I mean you would turn the video file into a bunch of pictures so one picture is one frame, then you would open a frame, loop through each row and column, and send the appropriate commands to the Mega to light which pixel up at which color. So yeah, something like that. – Unsigned_Arduino Aug 15 '20 at 20:55