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

Softwarový multimediální přehrávač, který neumí pracovat s optickou mechanikou a informací o skladbě, stojí za starou bačkoru. Ten náš napsaný v jazyku C# to ale už umí.

V dnešním díle se naposledy podíváme na přehrávač využívající komponentu AxWindowsMediaPlayer, která je jádrem přehrávače Windows Media Player. V minulých dílech jsme si ukázali, jak ukládat historii přehrávaných skladeb do XML souboru, nebo jak obecně pracovat s titulky, přičemž jsme pro ukázku použili formát SUB. Zobrazili jsme aktuální pozici nahrávky pomoci grafického prvku v dolní části okna a přehráli jsme skladbu z webu včetně internetového streamu ČT24.

V dnešním díle si na závěr představíme tyto funkce:

  • Identifikace CD jednotky a přístup k souborům
  • Otevření a zavření CD mechaniky
  • Editace atributů nahrávky (interpret, název skladby atd.)

Přehrávání skladeb z CD

Pro získání cesty k CD mediu musíme nejprve pomocí statické metody GetDrives třídy System.IO.DriveInfo získat pole všech jednotek připojených k počítači (tedy veškeré USB disky, hard disky, diskety a CD mechaniky). Jednotlivé jednotky jsou představovány třídou DriveInfo, jejíž vlastnost DriveType určuje její typ. Pro získání cest ke všem souborům na médiu v CD mechanice použijeme statickou metodu GetFiles třídy System.IO.Directory.

Klepněte pro větší obrázek  Klepněte pro větší obrázek
Ovládání optické mechaniky a možnost zobrazení vlastností nahrávky

// Projde jednotlivé jednotky
foreach (DriveInfo i in System.IO.DriveInfo.GetDrives())
{
  // Pokud je jednotka CD mechanikou
  if (i.DriveType == DriveType.CDRom)
  {
    // Projde jednotlivé soubory na mediu v této mechanice
    foreach (string f in Directory.GetFiles(i.RootDirectory.FullName))
    {
      // Přidá náhrávky do seznamu
      this.prehravanySeznam.Add(new Composition(Path.GetFileName(f), f));
    }
    break;
  }
}

Otevírání a zavírání CD mechaniky

Microsoft .NET Framework nenabízí mnoho možností, jak pracovat s hardwarem počítače, a proto pro fyzickou manipulaci s CD mechanikou budeme muset použít služeb WinAPI. K tomu nám pomůže metoda mciSendStringA knihovny winmm.dll. Její deklarace v programu vypadá takto:

[DllImport("winmm.dll",EntryPoint ="mciSendStringA",CharSet= CharSet.Ansi)]
protected static extern int mciSendString(string mciCommand,
                                                                                                StringBuilder returnValue,
                                                                                                int returnLength,
                                                                                                IntPtr callback);

Pro otevření mechaniky musíme zavolat tuto metodu s prvním parametrem “set cdaudio door open”, pro uzavření pak “set cdaudio door closed”, celá třída vypadá takto:

public class Mechanika
{
  [DllImport("winmm.dll",EntryPoint ="mciSendStringA",CharSet= CharSet.Ansi)]
 protected static extern int mciSendString(string mciCommand,
                                                                                                    StringBuilder returnValue,
                                                                                                    int returnLength,
                                                                                                    IntPtr callback);

 public static void Otevri()
 {
      mciSendString("set CDAudio door open", null, 0, IntPtr.Zero);
   }

 public static void Zavri()
 {
  mciS
endString("set CDAudio door closed", null, 0, IntPtr.Zero);
 }
}

Editace atributů nahrávky

Vlastnost currentMedia třídy AxWindowsMediaPlayer vrací aktuálně přehrávanou nahrávku jako objekt typu WMPLib.IWMPMedia. Metoda getAttributeName vrací název atributu jako například: Author, FileType, Duration, BitRate apod. Metoda getIteminfo zase vrací konkrétní hodnotu atributu dané nahrávky.

Klepněte pro větší obrázek
Vlastnosti hudební nahrávky

for (int x = 0; x < medium.attributeCount; x++)
{
  // Získá název atributu
  string atr = medium.getAttributeName(x);
  comboBox1.Items.Add(atr);
  // Získá k němu příslušnou hodnotu aktuální nahrávky
  string itemInfo = medium.getItemInfo(atr);
  // Pokud je text příliš dlouhý, rozdělí ho na dvě řádky
  if (itemInfo.Length > 20)
  {
    itemInfo = itemInfo.Insert(20, "\n");
  }
  // Vypíše atributy a jejich hodnoty
  label2.Text += "\n" + atr + ": " + itemInfo;
}

A takto by mohl vypadat výstup:

Author: Nirvana
AverageLevel: 6011
Bitrate: 128000
CurrentBitrate:
Duration: 254,91
FileSize: 4082669
FileType: mp3
Is_Protected: False
Is_Trusted: false
IsVBR: False
MediaType: audio
PeakValue: 32673
SourceURL: C:\Program Files\Shared\Nirvana - In Bloom.mp3
Streams: audio
Title: In Bloom
type: local
WM/Genre: Other
WM/GenreID:
WMServerVersion:

Pro úpravu atributu nahrávky, použijeme metodu setItemInfo objektu IWMPMedia, která jako první argument očekává název název atributu, jehož hodnotu chceme nastavit. Tato hodnota je představována druhým argumentem.

medium.setItemInfo(“Athor”, “Beatles”);

Díky tomu můžete v přehrávači zobrazit informace o skaldbě, aniž byste museli pracovat například s některou s knihoven pro čtení ID3 tagů aj. O to vše se postará přímo jádro Windows Media Playeru, které si poradí alespoň se základy prakticky všech popisovacích formátů podporovaného audia a videa.

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, Bloom, 1001, Beatles, Door, Nirvana, Audio knihy, Programátor, Billboard, VLA, Kody, Deklarace

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ý | 158

30 počítačových brzd, které vám zpomalí Windows

30 počítačových brzd, které vám zpomalí Windows

Na webu najdete hromadu rad, jak zrychlit počítač a Windows. My jsme na to šli opačně a naopak jsme hledali činnosti, které ho nejvíce zpomalují. Toto je třicítka těch základních.

12.  11.  2017 | Jakub Čížek | 90

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ů | 52

Do 20 let nebude nikdo vlastnit auta, říká zkušený šéf několika automobilek

Do 20 let nebude nikdo vlastnit auta, říká zkušený šéf několika automobilek

** Bývalý šéf a expert z několika velkých automobilek se vyjádřil k budoucnosti tohoto průmyslu ** Do 20 let „nikdo“ nebude vlastnit auta ** Veškerá doprava bude řešená pomocí velkých logistických platforem

15.  11.  2017 | Karel Javůrek | 74


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