کلاس 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 تمام شود |
جواب نداد.