Určite poznáte znamenitý multimediálny prehrávač / streamer / konvertor VLC: http://www.videolan.org/
Dlho som prehliadal možnosť vylepšiť si ho rôznymi doplnkami, no teraz som sa na to pozrel a zistil som, že to má určitý potenciál a programovanie skriptov v Lua nie je až také náročné. Chcel by som spraviť doplnok (extension), ktorý by prehrával titulky v externom okne no s možnosťou aj vo videu: VLC Extension: subtitler >> External / Dual subtitles
Takto by sa dalo sledovať naraz viac nezávislých titulkov napríklad pre účely výuky cudzieho jazyka alebo pre multijazyčných divákov.
Problém však je, že neexistuje dostatočná dokumentácia a príklady použitia jednotlivých funkcií. Vyzerá to tak, že developeri si to spravili skôr len pre seba, než pre bežného užívateľa - neprogramátora. Na tom fóre jeden developer načrtol riešenie (http://forum.videolan.org/viewtopic.php ... 36#p327808 , http://forum.videolan.org/viewtopic.php?f=29&t=98295), no podrobnosti už odmieta prezradiť. Asi platí, že: "Nemaže - klepe to!"
Teraz by som potreboval zistiť, ako sa vlasne používa vlc.var.add_callback(). Zmienka o tom je v "README.txt" dokumente (aktuálne pre VLC2), ktorý bol donedávna súčasťou VLC (v adresári ... \lua\).
Na Wiki VLC stránkach je uvedené len ako sa robí playlist a tam dole sú uvedené 2 užitočné adresy o programovaní v Lua:
> Lua 5.1 reference manual
> Lua tutorials
No mňa zaujíma iný typ doplnku - extension, na ktorý návod nie je. Sú len hotové skripty, ktoré slúžia ako príklady použitia. Vo verziách VLC 1.1.x boli v príslušnom podadresári (... \lua\extensions\) napríklad Allociné a IMDb. Práve sa pokúšam podľa toho rozchodiť CSFD.cz extension, ktorý si budete môcť hádam už čoskoro aj vyskúšať. Z grafického rozhrania VLC sa to potom spúšťa cez menu View > CSFD.
========================================
Nedalo by sa to, čo potrebujem vedieť o konkrétnom použití vlc.var.add_callback(), vyčítať napríklad zo zdrojákov VLC? A možno to má obdobné použitie ako v jazyku C, len trochu inú formu. V tom C sa to možno nevolá "callback" ale narazil som na výraz "hook". Čiže potreboval by som nejako sledovať ten "time" objektu "input" a nejako reagovať na určitú udalosť (event). Nie som v tom doma, takže možno mi tu niekto poradí.
========================================
Vlastne ten celý môj záujem o programovanie doplnkov VLC začal, keď som narazil na jednoduchý skriptík, čo som aj prezentoval tu: VLC Extension: When will this be over?
Ešte vám uvediem malý príklad, skriptík, ktorý som si spravil na zobrazovanie času v pravom-hornom rohu počas sledovania filmu. Funguje len vo VLC 1.1.x pretože v novej verzii VLC2 bol vypnutý ten vlc.misc pre extensions. Už som kontaktoval toho príslušného za to zodpovedného developera.
Kód: Vybrať všetko
-- "time.lua"
-- Extension description
function descriptor()
return { title = "time" ;
version = "1.0" ;
author = "" ;
url = '';
shortdesc = "";
description = "";
capabilities = {""}
}
end
-- Activation hook
function activate()
create_dialog()
end
-- Deactivation hook
function deactivate()
end
function close()
deactivate()
end
function create_dialog()
dlg = vlc.dialog("Time")
w1 = dlg:add_label("Time is running",1,1,1,1)
w2 = dlg:add_button("STOP", click_STOP, 1, 2, 1, 1)
dlg:update()
while w1:get_text()=="Time is running" do
dlg:update()
local systemTime = os.date("%H:%M:%S")
vlc.osd.message(systemTime,channel1)
vlc.misc.mwait(vlc.misc.mdate() + 500000)
end
end
function click_STOP()
w1:set_text("STOP")
dlg:update()
end
Mimochodom, ten čas je potom nezastaviteľný, keďže sa mi nepodarilo vyriešiť, ako pretrhnúť tú čakaciu slučku. Nevadí, len na konci filmu treba potom ten prehrávač vypnúť "natvrdo"