2017-04-04 5 views
1

録画中にいくつかのスポーツ映像を録画していて、メモを書き留めています。再生中(クリップが記録された時)にVLCプレーヤーのクリップ時間を表示

できるだけ早く、私のコメントをビデオ上のパッセージにリンクさせたいと思います。私は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

あなたは時間毎秒を参照してくださいする必要がありますか?または、ビデオを一時停止するときにのみ表示されるのであれば問題ありませんか?素早いLUA拡張でやることができるかもしれない – Tee

+0

私はいつも時間を見たいと思います。画面の右上にある実行中の時計のように。だから私は私の前に私の論文に私の書いたコメントで座って、 "Ok - 10秒後に何かが起きる"と見ることができます。私がビデオを一時停止しなければならないのなら、それはすぐに迷惑になるでしょう、私は恐れています。 :/ – Zeth

+0

ああ、そうだ。テキストはビデオ自体にある必要がありますか?もしそれが側に小さな窓として現れるなら、どうでしょうか? – Tee

答えて

0

ここには、必要な作業を行うLUA拡張機能があります。指定された「開始」時間に基づいて右上に時間が表示されます。あなたがする必要があるのは、その開始時間を設定することだけです。あなたは、任意の時点で開始時間を調整することができ、テキストはそれに応じて更新する必要があります:

  1. [VLC DIR]\VLC\lua\extensions
  2. でファイルcustom_time.luaを入れて、コマンドラインを使用して[VLC DIR]\VLC\lua\intf
  3. 実行VLCでファイルlooper_custom_time.luaを入れ引数:vlc.exe --extraintf=luaintf{intf="looper_custom_time"}
  4. あなたがView -> Custom Timeに行くと何秒を設定することができ
  5. を再生する映像に基づいて、右上の時間が12:00:00から始まり、インクリメント表示されるはずですtarting時間はべきで、テキストは更新する必要があります

私はそれが動作するかどうか教えてください!

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() 
関連する問題