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, Programování, Download, 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...
Určitě si přečtěte

Nové úlovky kamer Googlu: Šmírovačka na Street View nepřestává bavit

Nové úlovky kamer Googlu: Šmírovačka na Street View nepřestává bavit

Google stále fotí celý svět do své služby Street View. A novodobou zábavou je hledat v mapách Googlu vtipné záběry. Podívejte se na výběr nejlepších!

19.  5.  2017 | redakce | 38

Nastal čas znovu vynalézt klávesnici. Anebo vám ta současná opravdu vyhovuje?

Nastal čas znovu vynalézt klávesnici. Anebo vám ta současná opravdu vyhovuje?

**Měli bychom provést revoluci klávesnice? ** Anebo je její dnes už hodně zastaralý koncept prostě nejlepší? ** Budeme na klávesnici odkázaní už navždy?

20.  5.  2017 | Jakub Čížek | 58

WannaCry se neměl vůbec rozšířit. Stačilo, abychom používali Windows Update

WannaCry se neměl vůbec rozšířit. Stačilo, abychom používali Windows Update

** WannaCry se masivně rozšířil kvůli zranitelnosti ve Windows ** Ta mu umožnila, aby se pokusil sám napadnout další počítače ** Jenže ta chyba už je dva měsíce opravená!

22.  5.  2017 | Jakub Čížek | 84


Aktuální číslo časopisu Computer

Supertéma: moderní cestování

Kdy opravdu přijdou nové baterie?

Velké testy: 6 herních notebooků a 8 volantů

Recenze: AMD Ryzen řady 5