How to make video in roblox studio

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.

  1. Go to this website: Split GIF image in frames
  2. 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.
Click this to learn how to convert your mp4 (Or any non supported types)

3. Getting every frame

After you have submitted the gif you want, you can now create the frames.

  1. Once you have press the button, you can now download every singe frame.

  1. When you get your zip file, go to “files”

  2. Create a folder which you will put all the frames in.

  3. Go to downloads

  4. Place the zip file into the folder you created.

  5. Extract your zip file in the folder you created.

I named mine (Gifs To image) You can name it anything you want.

  1. 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.

  1. 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.

  1. 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.

  1. Go to file explorer.

  2. Go the folder where all the frames are located.

  3. In every frame name, it shows the delay

You can use this way less efficient script if you want. --//Variables local Video = script.Parent --//Loops while true do Video.Image = "rbxassetid://" -- First frame task.wait(0.03) Video.Image = "rbxassetid://" task.wait(0.03) Video.Image = "rbxassetid://" task.wait(0.03) Video.Image = "rbxassetid://" task.wait(0.03) Video.Image = "rbxassetid://" task.wait(0.03) Video.Image = "rbxassetid://" task.wait(0.03) Video.Image = "rbxassetid://" task.wait(0.03) Video.Image = "rbxassetid://" task.wait(0.03) Video.Image = "rbxassetid://" task.wait(0.03) Video.Image = "rbxassetid://" task.wait(0.03) Video.Image = "rbxassetid://" task.wait(0.03) Video.Image = "rbxassetid://" task.wait(0.03) Video.Image = "rbxassetid://" task.wait(0.03) Video.Image = "rbxassetid://" task.wait(0.03) Video.Image = "rbxassetid://" task.wait(0.03) Video.Image = "rbxassetid://" task.wait(0.03) Video.Image = "rbxassetid://" task.wait(0.03) Video.Image = "rbxassetid://" task.wait(0.03) Video.Image = "rbxassetid://" -- All the way the the last frame (In order) task.wait(0.03) -- You can increase this by copy and pasting: --Video.Image = "rbxassetid://" -- task.wait(0.03) end local Video = script.Parent local ID = {" ID_Example" , "ID_example" ETC...} -- put your image ID's here with commas between each ID while true do for i,v in ipairs(ID) do Video.Image = v task.wait(0.03) end end

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 end

Not sure if it’ll work, don’t have Roblox Studio on right now.

1 Like

Downrest:

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 end

1 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

geometricalC2123:

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.

geometricalC2123:

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

geometricalC2123:

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:

yousefoyoy:

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 →

Última postagem

Tag