在文件中跳转到特定的时间?
2022-2-4 5:20:50
收藏:0
阅读:151
评论:3
我正在试图制作一个 VLC 脚本,检查是否打开了“随机”按钮,如果是,则在跳转到随机文件时,以随机时间而非time=0
开始。
到目前为止,它看起来应该是一个播放列表脚本,我可以从播放列表对象中获得持续时间,但是在此文档页面中没有显示如何从 Lua 脚本内跳转到特定时间。
如何在 Lua 中进行操作?
原文链接 https://stackoverflow.com/questions/6012921
点赞
stackoverflow用户2510178
只需要使用这个:
vlc.var.set(input, "time", time)
2013-06-21 19:23:31
stackoverflow用户327301
在 common.lua 中有一个 seek 方法。
使用示例:
require 'common'
common.seek(123) -- 定位到 02m03s
common.seek("50%") -- 定位到视频中间
2015-06-16 15:06:20
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
实际上,文档确实说你可以这样做…虽然没有直接说明。以下是关于播放列表解析器接口的说明:
VLC Lua 播放列表模块应该定义两个函数: * probe():如果我们想要在此脚本中处理播放列表,则返回 true * parse():读取传入的数据并返回播放列表项 播放列表项的格式与期望的 playlist.add() 函数相同(请参见常规 lua/README.txt)
如果你继续阅读有关
playlist.add()
的描述,它会说这些项有一个你可以提供的字段的大列表。有很多选择(如.name
、.title
、.artist
等),但唯一必需的似乎是.path
… 它是“该项的完整路径/URL”。虽然未明确提及查找位置,但你可以选择提供的参数之一是
.options
,它被称为“VLC 选项列表”。它以fullscreen
为例。如果--fullscreen
的对应物有效,那么其他命令行选项,如--start-time
和--stop-time
,也能有效吗?在我的系统上,它们是有效的,这是脚本!
-- randomseek.lua -- -- 对于你的系统类型,这个文件的编译版本(.luac)应该被放置在正确的 VLC 播放列表解析器目录中。参见: -- -- http://wiki.videolan.org/Documentation:Play_HowTo/Building_Lua_Playlist_Scripts -- -- 文件格式非常简单,只是交替的文件名和时间长度,例如,如果你有一个名为“example.randomseek”的文件, -- 它可能包含以下内容: -- -- foo.mp4 -- 3:04 -- bar.mov -- 10:20 -- -- 它只是会查找文件中的任意位置,并随机播放剩余时间的任意量。 function probe() -- 由于其他 VLC lua 插件似乎没有,因此种植随机数 math.randomseed(os.time()) -- 告诉 VLC 我们将处理以 ".randomseek" 结尾的任何内容 return string.match(vlc.path, ".randomseek$") end function parse() -- VLC 希望我们返回一个条目列表,每个条目本身是一个属性列表 playlist = {} -- 我假设输入文件格式良好,但显然,如果你写真正的东西,你应该进行错误检查 while true do playlist_item = {} line = vlc.readline() if line == nil then break --错误处理放在这里 end playlist_item.path = line line = vlc.readline() if line == nil then break --错误处理放在这里 end for _min, _sec in string.gmatch( line, "(%d*):(%d*)" ) do duration = 60 * _min + _sec end -- 带有整数参数的 math.random 返回一个介于传递的数字之间的整数,包括其自身,VLC 使用基于零的时间 start_time = math.random(duration) - 1 stop_time = math.random(start_time, duration - 1) -- 给观众一个提示,说明剪辑需要多长时间 playlist_item.duration = stop_time - start_time -- 播放列表项有另一个列表,其中包含选项 playlist_item.options = {} table.insert(playlist_item.options, "start-time="..tostring(start_time)) table.insert(playlist_item.options, "stop-time="..tostring(stop_time)) table.insert(playlist_item.options, "fullscreen") -- 将项添加到播放列表中 table.insert( playlist, playlist_item ) end return playlist end