پخش صدا با SoundPlayer در سی شارپ

کلاس SoundPlayer فریمورک دات نت، که در فضای نامی System.Media تعریف شده است، برای پخش فایل صوتی wav مورد استفاده قرار می‌گیرد. و همچنین منبع صدای شما می‌تواند از داخل فایل‌های خود ویندوز یا ریسورس داخل اپلیکیشن و حتی به صورت http و از وب باشد.

شروع به کار با پخش یک صدا

همانطور که گفته شد، این کلاس فرمت wav را از سه منبع درایو، ریسورس اپلیکیشن و وب می‌تواند پخش کند.

پخش از درایو:

SoundPlayer simpleSound = new SoundPlayer(@"c:\Windows\Media\FuLLKade.wav");  
simpleSound.Play();

پخش از ریسورس:

Stream stream = Properties.Resources.FuLLKade;
SoundPlayer player = new SoundPlayer(stream);
player.Play();

ویژگی FuLLKade که در Properties.Resources قرار دارد، در واقع فایل FuLLKade.wav می‌باشد که به ریسورس اضافه شده است.


پخش از وب:
البته پخش از وب در این کلاس ساده، به صورت Stream نبوده و پس از دانلود شروع به پخش شدن می‌کند!

SoundPlayer player = new SoundPlayer();
player.SoundLocation = "http://dl.fullkade.com/test.wav";
player.LoadCompleted += new AsyncCompletedEventHandler(Player_LoadCompleted); ;
player.LoadAsync();

در کد بالا، از SoundLocation برای تنظیم URL، از LoadComplated برای تنظیم رویدادی که در زمان لود شدن یا دانلود شدن آهنگ رخ می‌دهد و در نهایت از متد LoadAsync نیز برای بارگزاری به صورت Asyc استفاده کرده‌‍ایم. رویداد را هم به صورت زیر پیاده می‌کنیم:

private void Player_LoadCompleted(object sender, AsyncCompletedEventArgs e)
{
    SoundPlayer player = (SoundPlayer)sender;
    if (player.IsLoadCompleted)
    {
        try
        {
            player.Play();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Error playing sound");
        }
    }
}

با اجرای این کد و در صورتی که لینک صحیح باشد، صدا پخش خواهد شد. (البته توجه داشته باشید که به اینترنت نیز باید دسترسی داشته باشید.)

لیست متدها و ویژگی‌های مهم

نام توضیحات
ویژگی SoundLocation آدرس وب صدا که می‌تواند UNC یا HTTP باشد.
ویژگی LoadTimeout مدت زمانی که برنامه‌ی شما منتظر خواهد ماند تا صدا قبل از ایجاد یک خطا یا Exception بارگزاری شود. برحسب میلی ثانیه بوده و مقدار پیشفرض آتن 10 می‌باشد.
ویژگی IsLoadCompleted آیا صدا لود شده است یا خیر؟!
متد Load بارگزاری صدا به صورت synchronously یا همگام
متد LoadAsync بارگزاری صدا به صورت asynchronously یا ناهمگام (پس از لود شدن کامل، رویداد OnLoadCompleted تولید خواهد شد.
متد Play شروع به پخش صدا در یک thread جدید
متد PlaySync شروع به پخش صدا در همین thread فعلی
متد PlayLooping همانند Play عالی با این تفاوت که پس از اتمام، دوباره از اول شروع به پخش می‌کند
متد Stop توقف صدا
رویداد LoadCompleted وقتی کار متد LoadAsync تمام شود

از آن جهت که این کلاس، فقط فایل صوتی wav را پخش می‌کند و همچنین امکانات زیادی در اختیار ما قرار نمی‌دهد، می‌توانید از کتابخانه‌ی گفته شده در «این‌لینک»، استفاده نمایید.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

cp-codfk

نظرات ثبت شده بدون دیدگاه

توضیحات پیشنهادی نظرات اشتراک