Help and Feedback Game Design Support
So, I want to use a short video I made of an advertisement on a bilboard in Roblox Studio, but I’m not sure how to get the video to display on a part. I know you can use video frames but I need to use my own video and currently we can’t upload videos to Roblox. Does anyone know of a workaround I can use? Would a .gif file work?
2 Likes
Maybe something with a webserver? Feel free to correct me if I’m wrong.
You cant upload gifs or mp4s, but you can upload images. You’d have to either upload every frame as an image, or multiple frames in one image and cycle through them. Then you’d need to play the audio at the same time you start playing the frames.
2 Likes
Resources Community Tutorials
Today I will show you how to make a fully functioning GIF or a Video on Roblox!
1. Find your Video!
If you want to create a gif / Video on Roblox, You have to find the video you want to use.
For today’s tutorial. I Will be using This gif (You can create or find anything you want)
2. How to make frames
Now, you found your video / GIF, here are the steps to create frames.
- Go to this website: Split GIF image in frames
- Insert your gif (You can use links)
If your gif or Video is a mp4 or is not a supported image type, then follow the tutorial under this.
3. Getting every frame
After you have submitted the gif you want, you can now create the frames.
- Once you have press the button, you can now download every singe frame.
-
When you get your zip file, go to “files”
-
Create a folder which you will put all the frames in.
-
Go to downloads
-
Place the zip file into the folder you created.
-
Extract your zip file in the folder you created.
I named mine (Gifs To image) You can name it anything you want.
- You now have every frame in your folder.
4. Uploading every image to Roblox.
This will be the most annoying step you have to do.
- Simply upload every image to Roblox.
I have already uploaded most of the images.
You have to name each different image a number (from the first frame to the last) so you don’t get confused or lost.
- Uploading is very simple, you just have to press choose file, then upload.
Then select the next file.
You have to be lucky with moderation
5. Changing each decal into an image.
This is also very annoying to do.
So now the only way I know is to get an image from a decal, is by using this Roblox extension
Once you have the extension, you can now do this:
For every single frame to get the image.
Doing this is important, since decal id’s do not work with Image labels. Only Image Id’s work with Image-labels
6. Adding the gif to Roblox studio
That’s all what you have to do. (The localScript tutorial is under this.)
7 Scripting
Inside the local script, (You don’t have to use local scripts)
You have to add this.
Make sure to change the Task.wait to match the gif’s frame delay
How to know the delay between my frames?Thankfully, the website I used gives us information for that.
-
Go to file explorer.
-
Go the folder where all the frames are located.
-
In every frame name, it shows the delay
Now I will insert all the gif’s frames in order.
This is gonna take me a long time to convert each decal to image so I can get the image ID.
Conclusion
This is the script with the image id’s in order.
Here is a less efficient version of the script --//Variables local Video = script.Parent --//Loops while true do Video.Image = "rbxassetid://8814856822" -- First frame task.wait(0.03) Video.Image = "rbxassetid://8814859302" task.wait(0.03) Video.Image = "rbxassetid://8814861259" task.wait(0.03) Video.Image = "rbxassetid://8814871131" task.wait(0.03) Video.Image = "rbxassetid://8814879268" task.wait(0.03) Video.Image = "rbxassetid://8814876066" task.wait(0.03) Video.Image = "rbxassetid://8814885738" task.wait(0.03) Video.Image = "rbxassetid://8814889862" task.wait(0.03) Video.Image = "rbxassetid://8814909752" task.wait(0.03) Video.Image = "rbxassetid://8814911389" task.wait(0.03) Video.Image = "rbxassetid://8814914043" task.wait(0.03) Video.Image = "rbxassetid://8822628176" task.wait(0.03) Video.Image = "rbxassetid://8822629132" task.wait(0.03) Video.Image = "rbxassetid://8822629790" task.wait(0.03) Video.Image = "rbxassetid://8822652096" task.wait(0.03) Video.Image = "rbxassetid://8822652936" task.wait(0.03) Video.Image = "rbxassetid://8822653614" task.wait(0.03) Video.Image = "rbxassetid://8822654644" task.wait(0.03) Video.Image = "rbxassetid://8822655471" task.wait(0.03) Video.Image = "rbxassetid://8822657421" task.wait(0.03) Video.Image = "rbxassetid://8822658014" task.wait(0.03) Video.Image = "rbxassetid://8822658843" task.wait(0.03) Video.Image = "rbxassetid://8822659846" task.wait(0.03) Video.Image = "rbxassetid://8822661360" task.wait(0.03) Video.Image = "rbxassetid://8822662698" task.wait(0.03) Video.Image = "rbxassetid://8822665225" task.wait(0.03) Video.Image = "rbxassetid://8822666583" task.wait(0.03) Video.Image = "rbxassetid://8822668243" task.wait(0.03) Video.Image = "rbxassetid://8822669752" task.wait(0.03) Video.Image = "rbxassetid://8822672815" task.wait(0.03) Video.Image = "rbxassetid://8822675697" task.wait(0.03) Video.Image = "rbxassetid://8822877931" task.wait(0.03) Video.Image = "rbxassetid://8822878573" task.wait(0.03) Video.Image = "rbxassetid://8822880560" task.wait(0.03) Video.Image = "rbxassetid://8822882166" task.wait(0.03) Video.Image = "rbxassetid://8822884229" task.wait(0.03) Video.Image = "rbxassetid://8822885065" task.wait(0.03) Video.Image = "rbxassetid://8822886724" task.wait(0.03) Video.Image = "rbxassetid://8822887424" task.wait(0.03) Video.Image = "rbxassetid://8822993915" task.wait(0.03) Video.Image = "rbxassetid://8822994544" task.wait(0.03) Video.Image = "rbxassetid://8822995115" task.wait(0.03) Video.Image = "rbxassetid://8822995881" task.wait(0.03) Video.Image = "rbxassetid://8822996725" task.wait(0.03) Video.Image = "rbxassetid://8822998535" task.wait(0.03) Video.Image = "rbxassetid://8822999925" task.wait(0.03) Video.Image = "rbxassetid://8823000776" task.wait(0.03) Video.Image = "rbxassetid://8823005196" task.wait(0.03) Video.Image = "rbxassetid://8823248803" task.wait(0.03) Video.Image = "rbxassetid://8823559577" task.wait(0.03) Video.Image = "rbxassetid://8823560241" task.wait(0.03) Video.Image = "rbxassetid://8823561412" task.wait(0.03) Video.Image = "rbxassetid://8823566401" task.wait(0.03) Video.Image = "rbxassetid://8823567157" task.wait(0.03) Video.Image = "rbxassetid://8823567665" task.wait(0.01) end --This is the script that will loop the image, turning it into a gif. local Video = script.Parent local ID = {"rbxassetid://8814856822", "rbxassetid://8814859302", "rbxassetid://8814861259", "rbxassetid://8814871131", "rbxassetid://8814879268", "rbxassetid://8814876066", "rbxassetid://8814885738", "rbxassetid://8814889862", "rbxassetid://8814909752", "rbxassetid://8814911389", "rbxassetid://8814914043", "rbxassetid://8822628176", "rbxassetid://8822629132", "rbxassetid://8822629790", "rbxassetid://8822652096", "rbxassetid://8822652936", "rbxassetid://8822653614", "rbxassetid://8822654644", "rbxassetid://8822655471", "rbxassetid://8822657421", "rbxassetid://8822658014", "rbxassetid://8822658843", "rbxassetid://8822659846", "rbxassetid://8822661360", "rbxassetid://8822662698", "rbxassetid://8822665225", "rbxassetid://8822666583", "rbxassetid://8822668243", "rbxassetid://8822669752", "rbxassetid://8822672815", "rbxassetid://8822675697" , "rbxassetid://8822877931" , "rbxassetid://8822878573", "rbxassetid://8822878573" , "rbxassetid://8822880560" , "rbxassetid://8822882166" , "rbxassetid://8822884229" , "rbxassetid://8822885065" , "rbxassetid://8822886724" , "rbxassetid://8822887424" , "rbxassetid://8822993915" , "rbxassetid://8822994544" , "rbxassetid://8822995115" , "rbxassetid://8822995881" , "rbxassetid://8822996725" , "rbxassetid://8822998535" , "rbxassetid://8822999925" , "rbxassetid://8823000776" , "rbxassetid://8823248803" , "rbxassetid://8823559577" , "rbxassetid://8823560241" , "rbxassetid://8823561412" , "rbxassetid://8823566401" , "rbxassetid://8823567157" , "rbxassetid://8823567665" } while true do for i,v in ipairs(ID) do Video.Image = v task.wait(0.03) end end
Sometimes codes get very long
Result
//devforum-uploads.s3.dualstack.us-east-2.amazonaws.com/uploads/original/4X/6/1/7/617cc5ac1ef70884b599fa7afe4a8028735f85e1.mp4
Was this tutorial helpful for creating GIF’s ?
- Yeah, It was helpful!
- No, It did not help me.
- I don’t even need this lol
34 Likes
Just going to put this out there: that code is horribly inefficient. You could just add all the ids to a table and loop over it.
8 Likes
preload the assets before loading them in to avoid flickering
3 Likes
You create a table and then put all the decals ids in it with a for loop then sort the table by the decals’ names since you named them with numbers and with another for loop update the ImageLabel
Sprite sheets are better and efficient, probably a less quality image.
1 Like
Nice tutorial.
But for better code optimization, use this script:
local Video = script.Parent local ID = {"rbxassetid://8814856822", "rbxassetid://8814859302"} --ADD MORE IDS while true do for i,v in ipairs(ID) do Video.Image = v task.wait(0.03) end endNot sure if it’ll work, don’t have Roblox Studio on right now.
1 Like
local ID = {"rbxassetid://8814856822", "rbxassetid://8814859302"} --ADD MORE IDS
Adding all IDS here will make it WAAAAAAAAAYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY too long
It’s easier to read, see?
(Try it out, I wanna see if it works)
local Video = script.Parent local ID = {"rbxassetid://8814856822", "rbxassetid://8814859302", "rbxassetid://8814861259", "rbxassetid://8814871131", "rbxassetid://8814879268", "rbxassetid://8814876066", "rbxassetid://8814885738", "rbxassetid://8814889862", "rbxassetid://8814909752", "rbxassetid://8814911389", "rbxassetid://8814914043", "rbxassetid://8822628176", "rbxassetid://8822629132", "rbxassetid://8822629790", "rbxassetid://8822652096", "rbxassetid://8822652936", "rbxassetid://8822653614", "rbxassetid://8822654644", "rbxassetid://8822655471", "rbxassetid://8822657421", "rbxassetid://8822658014", "rbxassetid://8822658843", "rbxassetid://8822659846" "rbxassetid://8822661360", "rbxassetid://8822662698", "rbxassetid://8822665225", "rbxassetid://8822666583", "rbxassetid://8822668243", "rbxassetid://8822669752", "rbxassetid://8822672815", "rbxassetid://8822675697"} while true do for i,v in ipairs(ID) do Video.Image = v task.wait(0.03) end end1 Like
Hmm actually you’re right, I will update the post with your script, thank you.
1 Like
Updated the post, thank you : )
1 Like
Oh yeah it’s pretty good but could you make a version where it just needs 1 image for a gif player?
Do you mean a spirtesheet???
Yeah. It’s pretty tedious uploading all images and that you even have to worry for moderation
uploading all images and that you even have to worry for moderation
Actually, I had only 1 image moderated from 61 images. Also, the lower the quality, the less chance it is to get moderated.
So 0.03 seconds is not noticeable, so it’s not a big deal.
It’s pretty tedious uploading all images
Making gifs on Roblox needs patience.
What if I wanted it to be high quality? Also it’s faster to use a sprite sheet
What if I wanted it to be high quality?
It doesn’t always have to be low quality, you just have to be lucky.
Like I said here:
the lower the quality, the less chance it is to get moderated
You don’t get the point, if you upload just 1 image, it’s so faster.
Yes, I know it’s faster, but if you have a lot of images in the sprite-sheet, then it becomes very low quality.
1 Like
That takes so much time, using a spritesheet is better imo + some rectoffset.
Yes I know it takes some time. But this is the only way to make high quality gifs. sprite-sheets are limited. If you have soooo much frames for a GIF (Or a video) the quality will reduce significantly.
next page →