reklama

Staňte se programátorem: Napište si vlastní GOM Player III.

V předchozích dílech jste si s námi mohli napsat jednoduchý přehrávač s podporou playlistu a streamovaného videa a zvuku, dnes přidáme podporu přehrávání filmů s titulky.

V minulých dílech jsme si ukázali, jak pomocí komponenty AxWindowsMediaPlayer zpřístupnit v aplikaci přehrávací jádro Windows Media Player. Ukázali jsme si jak přehrát film, hudbu nebo stream z webu, jak vytvořit historii přehrávaných nahrávek a jak udělat vlastní seznam nahrávek. V dnešním díle se podíváme na přehrávání s titulky ve formátu SUB.

 

Práce s titulky SUB

Nejjednodušším formátem titulků je formát SUB. Ukázka toho, jak by titulky mohlo vypadat, uvádím níže:

{596}{931}Kde to jsme?
{1184}{1413}Vypadá to jako nějaký sklep
{1728}{2018}Asi ano a je tu docela zima

Klepněte pro větší obrázek  Klepněte pro větší obrázek
Nastavení titulků

První číslo ohraničené závorkami představuje číslo snímku, na kterém bude titulek zobrazen s aktuálním textem. Druhé číslo pak představuje číslo snímku, kdy titulek zmizí. Pro práci s titulky nám poslouží třída Titles. Metoda SetStartEnd nastaví počáteční a konečný snímek aktuálního titulku. Pro získání aktuálního titulku slouží vlastnost Text. Pro získání těchto údajů je nutné použití regulárních výrazů. K tomu nám poslouží třída System.Text.RegexExpressions.Regex, která představuje regulární výraz, který je zadán do konstruktoru. Pro získání řetězce, jež se shoduje s regulárním výrazem, nám poslouží metoda Match, která vrací instanci třídy Match ze stejného jmenného prostoru. Vlastnost Value této třídy představuje nalezený řetězec.

Regex r = new Regex(@“\d*\w{1,}\n.....“);
Match m= r.Match(text);
MessageBox.Show(“Nalezený text je:“ + m.Value);

Naše třída Titles, která se postará o práci s titulky:

public class Titles
{
  string[] titulky;
  int akt = 0;
  double end;
  double start;

  public Titles( string cesta)
  {
    akt = 1;
   
titulky = File.ReadAllLines(cesta);
    this.SetStartEnd();
  }

  void SetStartEnd()
  {
    // Vyhledá číslo snímku na kterém titulek začíná
    Regex regee = new Regex(@"\{\d*");
    Match mee = regee.Match(titulky[akt]); 
    //Vyhledá číslo snímku, na kterém titulek končí
    Regex rege = new Regex(@"}{\d*");
    Match me = rege.Match(titulky[akt]);
    // Převede počáteční a koncové snímky titulku na sekundy 
    start = ((double)int.Parse(mee.Value.Replace("}", "").Replace("{", "")) / 24);
    end = ((double)int.Parse(me.Value.Replace("}", "").Replace("{", "")) / 24);
  }

  public string Text
  {
     get
    {
      Regex reg = new Regex(@"\d}[^{].*");
      Match m = reg.Match(titulky[akt]);
      akt++;
      this.SetStartEnd();
      return m.Value.Replace("{", "").Replace("}", "").Remove(0, 1);
    }
  }

  public double EndAt
  {
    get { return end; }
  }

  public double StartAt
  {
    get{return start; }
  }
}

Dialogy

Implicitní dialog systému Windows určený pro výběr souborů je typu System.Windows.Firms.OpenFileDialog. Pro nastavení filtrování souborů dle jejich přípon slouží vlastnost Filter. Té je nutné řetězec obsahující název typu souborů a jejich příponu, například:

Klepněte pro větší obrázek  Klepněte pro větší obrázek
Přehrávání videa a hudby, komponenta si zachová kontextovou nabídku z Windows Media Playeru

“Textové soubory|*.txt“

Dialog následně zobrazíme metodou ShowDialog:

// Vytvoří dialog pro výběr souborů
OpenFileDialog opf = new OpenFileDialog();
// Nastaví filtr pro výběr sub titulků
opf.Filter = "Titulky SUB|*.sub";
if (opf.ShowDialog() == DialogResult.OK)
{
  titulky = new Titles(opf.FileName);
  Form1_SizeChanged(this, null);
}

A to je všechno. Dnes jsme rozšířili přehrávač o podporu SUB titulků. Náš malý GOM Player tpsotavený na jádře Windows Media Player tak už zvládá přehrávání všechn běžných formátů, které vládne i Windows Media Player včetně internetových streamů (ČT24 aj.). Pamatuje si naposledy přehrávané skladb ya umožňuje tvorbu jednoduchých playlistů.

Nakonec jako vždy nesmí chybět spustitelný přeložený program a zdrojový kód. K tomu prvému budete potřebovat Microsoft .NET Framework, k tomu druhému pak bezplatné vývojové prostředí Visual C# 2008 Express Edirion.


Mareš, Amadeo: 1001 tipů a triků pro C#

Klepněte pro větší obrázekNestačí vám náš seriál? Pořiďte si knihu jeho autora, ve které vás seznámí s tisícovkou programovacích tipů a technik. Díky velkému počtu tipů, návodů, triků a rad kniha poslouží při každé příležitosti. Kdykoli si nevíte rady, stačí nalistovat příslušnou stranu a problém okamžitě vyřešit. Tipy a triky míří především na začínající programátory; užitečné rady tu ovšem najdou i pokročilejší vývojáři a ostřílení znalci. SOučástí publikace je i přiložené DVD, na kterém najdete bezplatné vývojové prostředí Visual C#, databázový server a především všechny zdrojové kódy z knihy, takže je budete moci okamžitě použít. Webové stránky knihy.

Témata článku: Software, Download, Programování, Match, Double, Public, 1001, Remove

3 komentáře

Nejnovější komentáře

  • svick 7. 5. 2009 23:50:28
    Docela mi v textu článku chybí, jak vlastně titulky zobrazit, bez toho to...
  • kozec 27. 4. 2009 18:58:54
    Ty si to este neskusal, vsak nie? :-P
  • Tehomas 27. 4. 2009 10:26:04
    Tak nejak jsem zavzpominal na komentare pod prvnim dilem, kde se rozhorela...
reklama
Určitě si přečtěte

Vybíráte herní periferii nebo hardware? Pak zapomeňte na nálepku Gaming

Vybíráte herní periferii nebo hardware? Pak zapomeňte na nálepku Gaming

** Herní hardware se od toho běžného často liší jen vzhledem ** Při výběru stále nezapomínejte na základní parametry ** Poradíme jak vybrat herní hardware i periferie

20.  2.  2017 | Stanislav Janů | 35

10 nejhorších produktů v historii Microsoftu

10 nejhorších produktů v historii Microsoftu

20.  2.  2017 | Karel Javůrek | 132

Pojďme programovat elektroniku: Žádný bastlíř se neobejde bez armády švábů

Pojďme programovat elektroniku: Žádný bastlíř se neobejde bez armády švábů

** Každý bastlíř se po čase neobjede bez armády švábů ** Dnes si některé z nich vyzkoušíme ** Třeba zázračný posuvný registr

19.  2.  2017 | Jakub Čížek | 39

AMD oficiálně představilo procesory Ryzen. Známe i jejich české ceny

AMD oficiálně představilo procesory Ryzen. Známe i jejich české ceny

** AMD uvedlo první tři procesory Ryzen 7 ** Všechny budou pracovat s osmi jádry a šestnácti vlákny ** Na pulty obchodů se dostanou už za týden

22.  2.  2017 | Stanislav Janů | 121

Vyhledávání ve Windows není dokonalé, zkuste to 5× jinak

Vyhledávání ve Windows není dokonalé, zkuste to 5× jinak

** V macOS funguje vyhledávání Spotlight, ve Windows podobně propracovaná funkce chybí ** Alternativy se zaměřují na rychlé hledání souborů i externí zdroje ** Mnohé mohou vyhledávání ve Windows kompletně nahradit

18.  2.  2017 | Stanislav Janů | 58

EU se děsí Windows 10. Prý o nás vědí až příliš. Microsoft chystá změny

EU se děsí Windows 10. Prý o nás vědí až příliš. Microsoft chystá změny

** Evropští úředníci chtějí, aby byly Desítky transparentnější ** Microsoft od jara skutečně chystá změny ** Ochráncům soukromí to ale nestačí

21.  2.  2017 | Jakub Čížek | 217


Aktuální číslo časopisu Computer

Stavba 3D tiskárny

Výbava domácí elektrodílničky

Budoucnost 5G sítí

Velké testy microSD karet a vodních chladičů

Přehled mobilních tarifů

reklama
reklama