Odtwarzanie dźwięku za pomocą MCI

07.08.2009 @ 19:18:24 by Rafał Kozik | C# WinAPI

Xion pisał ostatnio o odtwarzaniu dźwięku za pomocą PlaySound. Jak dla mnie, ta metoda ma jedną ogromną wadę -- nie pozwala na odtworzenie wielu dźwięków jednocześnie.

Okazuje się też, że dźwięk możemy odtwarzać za pomocą MCI (Media Control Interface). W MSDN można znaleźć szczegółowe informacje na temat użycia. W dalszej części prosty przykład, który potrafi coś odtworzyć.



using System;
using System.Text;
using System.Runtime.InteropServices;

namespace Media
{
    class MCISoundPlayer
    {
        public MCISoundPlayer() {}

        [DllImport("winmm.dll")]
        private static extern long mciSendString(string strCommand, StringBuilder strReturn, int iReturnLength, IntPtr hwndCallback);

        static int lastAliasNumber = 0;

        public void Play(string fileName)
        {
            string alias = string.Format("MCIAlias{0}", lastAliasNumber++);
            string commandOpen = string.Format("open \"{0}\" type waveaudio alias {1}", fileName, alias);
            string commandPlay = string.Format("play {0}", alias);

            mciSendString(commandOpen, null, 0, IntPtr.Zero);
            mciSendString(commandPlay, null, 0, IntPtr.Zero);
        }
    }
}
Zmieniając waveaudio na mpegvideo możemy nawet odtworzyć plik mp3 ;)

Komentowanie zostało tymczasowo wyłączone.