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.

Diskuze (2) Další článek: Co chcete v Computeru: technologické články

Témata článku: Software, Programování, Download, Bloom, Minulý díl, Audio knihy, WMS, BBM, Druhý argument, Billboard, Beatles, Kody, VLA, Nirvána, Nirvana, Nápis, 1001, Door, První argument, Deklarace, Programátor, Software na Heureka.cz



Nejvíc sexy holky ve filmech: 60 nejslavnějších erotických symbolů

Nejvíc sexy holky ve filmech: 60 nejslavnějších erotických symbolů

Krásné ženy jsou pro mnohé erotické a sex symboly. Vybrali jsme ty nejslavnější z několika desetiletí filmové a seriálové tvorby. Najdete zde nejen fotografie, ale také název díla, které herečku proslavilo.

Marek Čech
Filmy a seriály
Rusko obviňuje astronautku NASA ze sabotáže Mezinárodní vesmírné stanice
Jiří Černý
Mezinárodní vesmírná staniceNASARusko
Recenze Windows 11. Microsoft nás opíjí rohlíkem a omezuje použitelnost

Recenze Windows 11. Microsoft nás opíjí rohlíkem a omezuje použitelnost

** Oproti Desítkám významně stouply hardwarové požadavky ** Windows 11 mají nový vzhled, ale výrazně narušují workflow. ** Potěší vyhledávání, multitasking i rychlejší aktualizace

Petr Urban
Windows 11Testy
Nejlepší herní sluchátka pod stromeček: skvělý zvuk, prostor, ale i dobrý mikrofon

Nejlepší herní sluchátka pod stromeček: skvělý zvuk, prostor, ale i dobrý mikrofon

Dobrá herní sluchátka dokážou umocnit zážitky ze hry svým zvukem a podáním prostoru. Díky mikrofonu pak poslouží i jako nástroj pro komunikaci ve hře. Vybrali jsme osvědčené herní headsety, které se teď vyplatí koupit.

Michal Maliarov
Sluchátka