我正在录制一些运动录像,并在录制过程中记下一些笔记。
我希望能够尽快将我的评论与视频中的段落联系起来。我用GoPro录制它,所以1.5小时长的视频被切成小块。
我认为如果VLC可以在屏幕上显示素材拍摄的实际时间,那将是一个想法。以相同的方式(从具有该注释的命令行打开VLC):
vlc.exe --sub-filter=marq{marquee=$T/$D" Volume:"$V,size=-2,color=16776960}:marq{marquee=Time:%H:%M:%S" Date:"%d/%m/%Y,color=16776960,size=-2,position=6}
该行只显示当前时间。我希望它能够显示如下内容:
如果录制是在19:39:21
, - 然后是视频的3分7秒开始,则计数器应该说19:42:28
。这是可以实现的吗?
我认为VLC是实现它的最好/最简单的方式 - 但如果其他人有另一个或更好的想法,那么我全都是耳朵。
答案 0 :(得分:0)
这是一个应该做你需要的LUA扩展。它会根据给定的" start"来显示右上角的时间。时间。您唯一需要做的就是设置开始时间。您可以随时调整开始时间,文本也应相应更新:
[VLC DIR]\VLC\lua\extensions
[VLC DIR]\VLC\lua\intf
vlc.exe --extraintf=luaintf{intf="looper_custom_time"}
12:00:00
开始的右上角时间,并根据播放的视频进行增量View -> Custom Time
并设置开始时间应该是什么,文字应该更新让我知道它是否有效!
custom_time.lua:
function descriptor()
return {
title = "Custom Time",
capabilities = { }
}
end
function activate()
window = vlc.dialog("Enter Time")
textbox = window:add_text_input("HH:MM:SS", 1, 1, 1, 1)
label = window:add_label("Enter Start Time (24h)", 2, 1, 1, 1)
button = window:add_button("Set", setStartTime, 1, 2, 2, 1)
end
function deactivate()
end
function meta_changed()
end
function setStartTime()
vlc.config.set("bookmark10", textbox:get_text())
vlc.msg.info("[ext_Custom_Time] " .. "Set Start Time to: ".. os.date("%H:%M:%S", globalTimeFinal))
end
looper_custom_time.lua:
-- "looper_custom_time" >> copy the script file into VLC\lua\intf\ folder
-- activate it:
-- vlc.exe --extraintf=luaintf{intf="looper_custom_time"}
function Looper()
local loops=0 -- counter of loops
while true do
if vlc.volume.get() == -256 then break end -- inspired by syncplay.lua; kills vlc.exe process in Task Manager
if vlc.playlist.status()=="stopped" then -- no input or stopped input
loops=loops+1
Log(loops)
Sleep(1)
else -- playing, paused
if vlc.playlist.status()=="playing" then
showFinalTime()
Sleep(1)
elseif vlc.playlist.status()=="paused" then
showFinalTime()
Sleep(0.3)
else -- ?
Log("unknown")
Sleep(1)
end
end
end
end
function getStartTime()
local pattern = "(%d+):(%d+):(%d+)"
local startTimeString = vlc.config.get("bookmark10")
if startTimeString == nil then
startTimeString = ""
end
local hh, mm, ss = startTimeString:match(pattern)
return os.time({year = 2000, month = 1, day = 1, hour = hh, min = mm, sec = ss})
end
function Log(lm)
vlc.msg.info("[looper_intf] " .. lm .. os.date(" %H:%M:%S", getStartTime()))
end
function showFinalTime()
local timePassed = getTimePassed()
local timeStart = getStartTime()
local timeFinal = os.date("%H:%M:%S", timeStart + timePassed)
vlc.osd.message( timeFinal, vlc.osd.channel_register(), "top-right", 1200000)
end
function getTimePassed()
return vlc.var.get(vlc.object.input(), "time")
end
function Sleep(st) -- seconds
vlc.misc.mwait(vlc.misc.mdate() + st*1000000)
end
Looper()