you can convert the video into multiple image frames, then upload it to roblox and you can just play the video by showing the frames in an ImageLabel in order using a loop that repeats every x second (x depends on the number of frames; if the FPS is 25, x will be 0.04 because x = 1/FPS)
local ContentProvider = game:GetService("ContentProvider") -- needed for loading
local Image = path.to.Image -- replace this as the path to the ImageId/Decal
local frames = {} -- inside the array should be the image ids of each frame in order
local framesPerSecond = 25 -- change this to the FPS you desire; in this example, the fps is 25
ContentProvider:PreloadAsync(frames) -- loading the image ids
for frameOrder, frameImageId in ipairs(frames) do
Image.Image = frameImageId
task.wait(1/framesPerSecond)
end
for Decals just change Image.Image to Image.Texture
i recommend checking this resource out