Subtitles plugin do VLC

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

mederi
Level 2
Level 2
Příspěvky: 164
Registrován: únor 11
Pohlaví: Muž
Stav:
Offline

Subtitles plugin do VLC

Příspěvekod mederi » 11 dub 2011 17:25

Zdravím vospolok :smile:
Prichádzam s myšlienkou naprogramovať jednoduchý titulkový plugin pre dobre známy VLC prehrávač/streamer/enkodér. Jeho programátorom sa veľmi nechce do zlepšenia už v ňom zabudovaného titulkovania.

Je tam problém napríklad so zmenou pozície titulkov vo filme. Len nedávno pribudla možnosť nastaviť si klávesové skratky pre ich posun hore/dole, v starších verziách je len zmena pozície v nastaveniach prehrávača. V celoobrazovkovom režime by mnoho užívateľov privítalo, keby sa dali tie titulky posunúť až dole do čierneho pása pod obrazom. V chystanej verzii 1.2 už aspoň funguje pridávanie okrajov (Video scaling filter - Cropadd) a teda možnosť zväčšiť si obrazový snímok o prídavný čierny okraj, do ktorého je už možné tie titulky umiestniť.
Mnohí užívatelia by rovnako privítali aj možnosť duálneho zobrazenia dvoch a prípadne aj viacerých súborov tituliek, napríklad Čeština + Angličtina. Vtedy som si okamžite spomenul na mv2player, ktorý to pre 2 rôzne titulky dokáže jedinečne. Ten bol tu už dávno pred érou VLC. Je tuším od českých tvorcov a jeho vývoj sa už zastavil. Patrí do kategórie DirectShow prehrávačov, takže je stále použiteľný.
Nedávno som natrafil na programík s názvom MiniLyrics, ktorý slúži na zobrazovanie textu piesní k prehrávanej skladbe či videoklipu. Podporujue mnoho prehrávačov vrátane VLC. Tiež podporuje aj SRT filmové titulky. Funguje asi tak, že do zvolených prehrávačov nainštaluje svoj plugin, ktorý sa nejakým spôsobom napojí na ovládacie prvky prehrávača a na prehrávací čas. Pri otvorení prehrávača sa automaticky otvorí aj priehľadné okno MiniLyrics, v ktorom sa tent text efektne zobrazuje a ostáva vždy nad prehrávačom. Veľmi však zaťažuje procesor, čo je dosť viditeľné na starších a pomalších mašinách.

Na základe toho, čo som tu uviedol, mi napadla myšlienka vytvoriť natívny plugin pre VLC spôsobom, ako to robí MiniLyrics, takže vlastný plugin bude len nejaký nezávislý súbor (.dll) a žiadne iné zmeny vo VLC už nie sú potrebné. Plugin sa napojí na prehrávací čas vo VLC a podľa neho zobrazuje titulky načítané z externého súboru vo svojom externom okne. Počiatočná verzia by mohla zvládnuť SRT formát, zobraziť titulky len ako prostý text s nastavenou veľkosťou písma a priehľadnosť okna na začiatok tiež nemusí byť, ale okno by malo zostať vždy nad prehrávačom aj v celoobrazovkovom režime a myškou jednoducho umiestniteľné kdekoľvek na obrazovke. Operačný systém Windows, ak sa to nedá jednoducho univerzálne aj pre iné systémy.
V akom programovacom jazyku programujú to VLC? Pre vytvorenie toho pluginu bude zrejme potrebná znalosť rovnakého jazyka. Predpokladám, že to bude jazyk C. Zdrojové kódy VLC sú asi voľne dostupné. Algoritmy dekódovania rôznych titulkových formátov bude zrejme možné z tých zdrojákov vytiahnuť a použiť, alebo by sa ten plugin dokázal napojiť priamo na tie algoritmy vo VLC. VLC však renderuje tie zobrazované titulky priamo do obrazu prehrávaného videa.
Tak čo, nenahovorím na to nejakého skúseného programátora, alebo hoci aj mierne pokročilého, pre ktorého to bude akousi výzvou? Možno tu niekto pomôže zadefinovať, čo všetko bude k tomu ešte potrebné (znalosti, systémové prvky, dynamické knižnice, ...). Možno keď dáme viac hláv dokopy, niečo sa podarí :idea:

Reklama
mederi
Level 2
Level 2
Příspěvky: 164
Registrován: únor 11
Pohlaví: Muž
Stav:
Offline

Re: Subtitles plugin do VLC

Příspěvekod mederi » 13 dub 2011 16:50

Takže skúsim začať ja, možno sa niekto pripojí a pomôže mi s tým. Keďže zvládam len skriptovací jazyk PHP na programovanie webových aplikácii, ja si môžem pomôcť zatiaľ len takto teoreticky, pozháňať potrebné informácie a prípadne aj pomôcť navrhnúť nejaké algoritmy.

Prosím, poraďte mi, aké informácie by som mal získať napríklad priamo na VLC fóre, čo konkrétne sa mam pýtať. Potom by to už hádam nebol problém pre nejakého programátora to poskladať a skompilovať.

1.) Takže vytvoriť okno, v ktorom sa vypíše nejaký text, napríklad: "Hello world!" určite nebude problém.
2.) Ďalej otvoriť v tom okne SRT textový súbor, načítať jeho obsah (jednotlivé titulky) napríklad do nejakého viacrozmerného pamäťového poľa akoby do databázy (štart, stop, text) a prípadne ten čas previesť na potrebný formát (napríklad sekundy).
3.) Po úspešnom otvorení a spracovaní tituliek asi naštartovať nejaký cyklus, ktorý bude stále dookola v nejakom intervale (napríklad 10x za sekundu) kontrolovať, teda načítavať prehrávací čas z toho VLC prehrávača.
4.) Zistený čas porovnať s predchádzajúcou hodnotou, aby som zistil, čo sa deje, či je pauza, alebo čas (film) sa posunul dozadu alebo sa prehráva vpred. Podľa času vyhľadať buď od začiatku poľa príslušný štart-stop interval, alebo priamo prejsť na nasledujúcu titulku v poradí a vypísať do okna príslušnú titulku. Ak uplynie čas (bude väčší ako stop čas), tak vymazať tu titulku v okne.

Takže jediný problém tu vidím, ako čítať ten čas z toho VLC playera. Alebo sa ten čas nečíta, ale sa z toho prehrávača posiela do toho externého okna? Alebo sa nejedná o čas, ale o nejakú inú veličinu, napríklad obrazové snímky?

Ten MiniLyrics program si nainštaluje plugin, teda nakopíruje 2 súbory:
VLC\plugins\
libminilyrics_plugin.dll
MLPlugin.ini
Ten INI textový súbor obsahuje len odkaz, kde je ten MiniLyrics nainštalovaný:
[MiniLyrics]
WorkingFolder=C:\Program Files\Minilyrics
V tom adresári aplikácie na harddisku sú: 2 malé EXE súbory, 1 veľký DLL súbor a v podadresároch sú jazyky, skiny, plugin.

Po otvorení prehrávača VLC v nastaveniach v časti Interface > Control Interfaces sa objaví zaškrtávacia položka "MiniLyrics - Auto display lyrics for current playing song". Po jej zaškrtnutí, uložení nastavení a znovuotvorení prehrávača sa utomaticky otvorí aj MiniLyrics.

Je potrebné, aby plugin bol DLL súbor, ktorý ukazuje na ďalší spustiteľný súbor EXE? Nestačí len jeden DLL, v ktorom bude všetko potrebné a čo najjednoduchšie? Alebo nedal by sa len 1 nezávislý EXE súbor, teda to titulkové okno, ktoré otvorím sám po otvorení VLC prehrávača a nejakým zázrakom bude čítať ten čas z prehrávača?

Možno to nie je správne fórum na riešenie takýchto projektov. Poradíte nejaké vhodnejšie?
Vopred vďaka za rady, pripomienky, opravy.

Na VLC fóre som našiel toto: LibVLC. Vyzná sa niekto, o čom to je?
VLC fórum

Uživatelský avatar
domitea
Tvůrce článků
Level 4.5
Level 4.5
Příspěvky: 1971
Registrován: červen 09
Bydliště: Královehradecký kraj
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Subtitles plugin do VLC

Příspěvekod domitea » 14 dub 2011 17:27

LibVLC je v podstatě komponenta, kterou můžeš dát do svého programu (pod .NET se dá použít komponenta z Media Playeru)


Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 6 hostů