There isn't a simple solution to this.
I was looking into solving this when I made the python examples and I didn't like how much work it looked like it would take to do it the correct way. AKA writing a plugin using directshow. Besides that solution my thought is the problem boils down to two things:
1. Read a frame from a video
2. Get that frame to a texture so that Construct can draw it.
One (1) is easy, there are many python libraries that can do this. Two (2) is the problematic step. Existing ways in Construct to draw video aren't drawn by Constructs rendering engine but instead are drawn by other means to a child window. That's why the video is on top and has the side issue of not having a texture that textureSetter can get.
One idea I have is to use python with pyffmpeg to read individual frames from a video and write them to a temporary file. Then load that file with the "load frame from file" action to a sprite every frame. This may work but will kill the framerate because of the constant hardrive (hd) access. This could be helped a bit with a plugin and saving and loading a file in memory to avoid hd access.
Even if it's working to that point it's not going to be optimal. Loading a image to a texture stalls Construct's renderer, and still there is the audio of the video to deal with.
The solution is to write a plugin to do it, which will be time consuming.
or use existing methods and scratch the need for the video to not be on the top.