reklama

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, Door, Nirvana, Billboard, Bloom, 1001, Beatles

2 komentáře

Nejnovější komentáře

  • jehoVista 13. 5. 2009 22:42:32
    A o dobre placenou praci se zacnou hlasit stovky novych programatoru :-D
  • wetty 13. 5. 2009 11:55:52
    Tak máme přehrávání ze souboru, z CD, tak to už je jen krůček k přehrávání...
reklama
Určitě si přečtěte


reklama