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, Windows Media Player, Public, Dialog, 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

Novou superbaterii lze nabít za pár sekund, může prodloužit výdrž telefonu na více než týden

Novou superbaterii lze nabít za pár sekund, může prodloužit výdrž telefonu na více než týden

** Vědci vyvinuli nový nanomateriál pro tvorbu superkondenzátorů ** Ohebná struktura umožňuje použití i u nositelností ** Nová technologie umožní extrémně rychlé nabití a mnohem delší výdrž než současné Li-Ion baterie

26.  11.  2016 | Karel Javůrek | 36

Monitory do 10 tisíc: poradíme, jaké jsou teď nejlepší

Monitory do 10 tisíc: poradíme, jaké jsou teď nejlepší

** Dobrý monitor s kvalitním panelem lze pořídit pod tři tisíce korun ** Pod deset tisíc si můžete koupit pracovní 27" monitor nebo nejlevnější použitelné 4K ** Vybrali jsme také ideální model pro vícemonitorovou konfiguraci

27.  11.  2016 | Stanislav Janů | 13

Sbíječky vyměnili za klávesnice. Nový projekt má za cíl přeučit horníky na programátory

Sbíječky vyměnili za klávesnice. Nový projekt má za cíl přeučit horníky na programátory

** Programátorů je málo a horníků bez práce po uzavření dolu Paskov bude moc ** Problém řeší unikátní projekt ** Pilotní kurz dává naději, že by z horníků mohli být použitelní kodéři

28.  11.  2016 | David Polesný | 75