Skip to content

Instantly share code, notes, and snippets.

@josh04
Created October 30, 2023 09:34
Show Gist options
  • Save josh04/cd72cdd7f512a01cfaa3d842d219b335 to your computer and use it in GitHub Desktop.
Save josh04/cd72cdd7f512a01cfaa3d842d219b335 to your computer and use it in GitHub Desktop.
VLC script for playing a video file in a series of defined segments
description="ROS Randomiser"
local common = require("common")
local json = require ("dkjson")
math.randomseed(os.time())
math.random(); math.random(); math.random()
running = true
json_string = [[
{"vals": [{"start": 0.0320553790627291, "endval": 0.04635129800552663}, {"start": 0.8976023084008496, "endval": 0.9159915032802601}, {"start": 0.16587401545199917, "endval": 0.1928163242288099}, {"start": 0.6886102599770664, "endval": 0.7007772994717747}, {"start": 0.9159915032802601, "endval": 0.9798719852623268}, {"start": 0.7562503524634848, "endval": 0.7877370904374307}, {"start": 0.07777224279564637, "endval": 0.08883959621783183}, {"start": 0.44600729364437847, "endval": 0.4694813617309247}, {"start": 0.32810120871477716, "endval": 0.3479566516908848}, {"start": 0.8016100531984887, "endval": 0.8255211760061658}, {"start": 0.4933125928153843, "endval": 0.5150337425042766}, {"start": 0.7173712803353572, "endval": 0.7336785908979829}, {"start": 0.38998439761640696, "endval": 0.41833656033234956}, {"start": 0.06607985412711243, "endval": 0.07777224279564637}, {"start": 0.6091743895332443, "endval": 0.6317367520724853}, {"start": 0.13709889655431698, "endval": 0.1519540575596368}, {"start": 0.8429610692332274, "endval": 0.8680517698366449}, {"start": 0.10723349061037277, "endval": 0.11465402184333703}, {"start": 0.08883959621783183, "endval": 0.10723349061037277}, {"start": 0.5864522435475684, "endval": 0.6091743895332443}, {"start": 0.3479566516908848, "endval": 0.38998439761640696}, {"start": 0.04635129800552663, "endval": 0.06607985412711243}, {"start": 0.8680517698366449, "endval": 0.8976023084008496}, {"start": 0.9798719852623268, "endval": 1.0}, {"start": 0.7007772994717747, "endval": 0.7173712803353572}, {"start": 0.6317367520724853, "endval": 0.6630261104949527}, {"start": 0.41833656033234956, "endval": 0.44600729364437847}, {"start": 0.11465402184333703, "endval": 0.1240530481042164}, {"start": 0.5150337425042766, "endval": 0.5506654510592702}, {"start": 0.7877370904374307, "endval": 0.8016100531984887}, {"start": 0.5506654510592702, "endval": 0.5864522435475684}, {"start": 0.6630261104949527, "endval": 0.6886102599770664}, {"start": 0.3021176006165761, "endval": 0.31310506231554414}, {"start": 0.0010385924018271708, "endval": 0.0320553790627291}, {"start": 0.0, "endval": 0.0010385924018271708}, {"start": 0.8255211760061658, "endval": 0.8429610692332274}, {"start": 0.1240530481042164, "endval": 0.13709889655431698}, {"start": 0.7336785908979829, "endval": 0.7562503524634848}, {"start": 0.26282967084610037, "endval": 0.3021176006165761}, {"start": 0.1928163242288099, "endval": 0.2048940729740399}, {"start": 0.2048940729740399, "endval": 0.22818016053536855}, {"start": 0.31310506231554414, "endval": 0.32810120871477716}, {"start": 0.4694813617309247, "endval": 0.4933125928153843}, {"start": 0.22818016053536855, "endval": 0.26282967084610037}, {"start": 0.1519540575596368, "endval": 0.16587401545199917}]}
]]
json_obj, pos, err = json.decode(json_string)
if err then
vlc.msg.err("[ROS-R] json loaded: " .. err)
end
vlc.msg.dbg("[ROS-R] starting")
current_index = 1
next_milestone = 0.0
while running do
local input = vlc.object.input()
if input then
local pos = vlc.var.get(input, "position")
if pos > next_milestone and current_index <= #json_obj.vals then
vlc.msg.dbg("[ROS-R] moving, reached: " .. tostring(next_milestone))
pair = json_obj.vals[current_index]
common.seek(tostring(pair.start*100.0) .. "%")
next_milestone = pair.endval
local pos2 = vlc.var.get(input, "position")
vlc.msg.dbg("[ROS-R] new milestone: " .. tostring(next_milestone) .. " advancing to index " .. tostring(current_index))
vlc.msg.dbg("[ROS-R] pos: " .. tostring(pos2))
current_index = current_index + 1;
end
else
current_index = 1
next_milestone = 0.0
end
end
vlc.msg.dbg("[ROS-R] ending")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment