2017-04-04 4 views
1

Je suis en train d'enregistrer des séquences de sport et d'écrire des notes pendant que l'enregistrement est en cours.Afficher l'heure du clip dans le lecteur VLC pendant la lecture (l'heure à laquelle le clip a été enregistré)

J'aimerais pouvoir, le plus rapidement possible, lier mon commentaire au passage sur la vidéo. Je l'enregistre avec une GoPro, donc la vidéo longue de 1,5 heure est hachée en petits morceaux.

Je pensais que ce serait une idée, si VLC pouvait afficher l'heure réelle de la prise de vue, à l'écran. De la même manière de cette (ouverture VLC à partir d'une ligne de commande avec ce commentaire):

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} 

Cette ligne montre à l'heure actuelle. Je voulais par exemple pour montrer quelque chose comme ceci:

Si l'enregistrement a été commencé à 19:39:21, - puis trois minutes et 7 secondes dans la vidéo, le compteur devrait dire 19:42:28. Est-ce réalisable en quelque sorte? J'ai supposé que VLC était la meilleure/la plus simple pour y arriver - mais si quelqu'un d'autre a une autre ou une meilleure idée, alors je suis tout ouïe.

+0

Avez-vous besoin de voir le temps à chaque seconde? Ou est-ce que c'est OK si c'est montré seulement quand vous mettez en pause la vidéo? Peut être faisable avec une extension LUA rapide – Tee

+0

Je voudrais voir l'heure tout le temps. Comme une horloge en cours en haut à droite de l'écran. Je peux donc m'asseoir avec mes commentaires écrits sur mon papier devant moi et voir 'Ok - 10 secondes à partir de maintenant, quelque chose se lève'. Si je devais interrompre la vidéo «tout le temps», je crains que cela devienne rapidement une nuisance. : -/ – Zeth

+0

Ah, je vois. Le texte doit-il figurer sur la vidéo elle-même? Et s'il apparaît comme une petite fenêtre sur le côté? – Tee

Répondre

0

Voici une extension LUA qui devrait faire ce dont vous avez besoin. Il affichera l'heure en haut à droite en fonction d'un "début" donné. La seule chose que vous devrez faire est de définir ce que l'heure de début est. Vous pouvez régler l'heure de début à tout moment et le texte devrait mettre à jour en conséquence:

  1. Placez le fichier custom_time.lua dans [VLC DIR]\VLC\lua\extensions
  2. Placez le fichier looper_custom_time.lua dans [VLC DIR]\VLC\lua\intf
  3. run VLC en utilisant la ligne de commande arguments: vlc.exe --extraintf=luaintf{intf="looper_custom_time"}
  4. Vous devriez voir le temps en haut à droite à partir de 12:00:00 et incrémenter basé sur la lecture vidéo
  5. Vous pouvez aller à View -> Custom Time et définir ce que les s le temps de tarting devrait être, et le texte devrait mettre à jour

Faites-moi savoir si cela fonctionne!

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()