VideoFrame ID Fixer

As I’m sure your aware, Roblox recently released the long anticipated video frame feature. But it still has issues.

The main issue here being Video not automatically updating. So, I wrote a small little passive plugin to fix this issue.

This plugin works on its own and requires no button inputs or pressing anything. Just place a VideoFrame into Workspace, ReplicatedFirst or StarterGui, and the plugin will do it’s magic.

How to use

Import a video frame into the three services mentioned above, and it’ll automatically bind a changed signal for you, now when you input an id (such as 123, it now autoformats it to rbxassetid://123).

This only applies for strings that can be tonumber’d, otherwise it’ll do nothing.

Why limit the plugin to three services

This is more of a bruh moment on Roblox’s side. If I make the plugin just listen to game, it’ll fire the event for stuff that cant be identity checked, so I’ve opted to reserve the plugin only in these three services. If you feel any more should be added, please let me know

Issues

Issues can be reported below in the replies.

Source Code
local events = {}

local searchDescendants = {
	workspace, 
	game:GetService("StarterGui"), 
	game:GetService("ReplicatedFirst")
}

for _, v in pairs(searchDescendants) do
	v.DescendantAdded:Connect(function(obj)
		if events[obj] then return end --we dont want to rebind the event
		
		if obj:IsA("VideoFrame") then
			events[obj] = obj:GetPropertyChangedSignal("Video"):Connect(function()
				local videoID = obj.Video
				local id = tonumber(videoID)
				
				if id then
					obj.Video = "rbxassetid://" .. id
				end
			end)
		end
	end)
	
	v.DescendantRemoving:Connect(function(obj)
		events[obj] = nil
	end)
end
4 Likes

Could you by any chance account for the case where someone might have copied the URI (which includes the rbxassetid://) so it doesn’t become rbxassetid://rbxassetid://{id}? Seems like a neat little plugin in the meantime.

;p

1 Like

tonumber returns nil if it cant turn the string into a number, so it just ignores it if fails this condition check

local id = tonumber(videoID)
				
if id then
	obj.Video = "rbxassetid://" .. id
end```
3 Likes

You could use a pcall I guess.