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, První číslo, Match, Double, Přehrávaný film, Programátor, 1001, Public, Remove, VLA

Určitě si přečtěte

Tesla chce změnit nákladní dopravu. Její elektrický náklaďák má ohromující parametry

Tesla chce změnit nákladní dopravu. Její elektrický náklaďák má ohromující parametry

** Tesla představila elektrický kamion ** Má obdivuhodný výkon i dojezd ** Prodávat by se měl už za dva roky

17.  11.  2017 | Vojtěch Malý | 215

Elektronika, která nepotřebuje kabel ani baterii. Živí se rádiovým šumem

Elektronika, která nepotřebuje kabel ani baterii. Živí se rádiovým šumem

** Každá elektrická krabička má konektor pro napájení nebo baterii ** Jenže pozor, jednou by to tak nemuselo být ** Drobná elektronika se může živit rádiovými vlnami

14.  11.  2017 | Jakub Čížek | 15

Nejlepší notebooky do 10 tisíc, které si teď můžete koupit

Nejlepší notebooky do 10 tisíc, které si teď můžete koupit

** I pod hranicí desíti tisíc korun existují dobře použitelné notebooky ** Mohou plnit roli pracovního stroje i zařízení pro zábavu ** Nejlevnější použitelný notebook koupíte za pět a půl tisíce

16.  11.  2017 | Stanislav Janů | 53


Aktuální číslo časopisu Computer

Otestovali jsme 5 HDR 4K televizorů

Jak natáčet video zrcadlovkou

Vytvořte si chytrou domácnost

Radíme s koupí počítačového zdroje