PDA

View Full Version : پخش صوت موجود در Resource



Sajjad.Aghapour
شنبه 11 خرداد 1387, 09:36 صبح
سلام......
چطور میتونم یک فایل صوتی رو که به Resource اضافه کردم بدون استفاده از dll مربوط به media player داخل فرم پخش کنم. مثل:



SoundPlayer sound = SystemSounds.Beep;

اَرژنگ
شنبه 11 خرداد 1387, 19:29 عصر
سلام......
چطور میتونم یک فایل صوتی رو که به Resource اضافه کردم بدون استفاده از dll مربوط به media player داخل فرم پخش کنم. مثل:



SoundPlayer sound = SystemSounds.Beep;


سوالتان رامتوجه نمیشم، منظورتان از :
"بدون استفاده از dll مربوط به media player داخل فرم پخش کنم"
یعنی چی، مشکل اصلی چی هست که با ارضا شدن این شرط برطرف میشه؟

Sajjad.Aghapour
شنبه 11 خرداد 1387, 19:48 عصر
سوالتان رامتوجه نمیشم، منظورتان از :
"بدون استفاده از dll مربوط به media player داخل فرم پخش کنم"
یعنی چی، مشکل اصلی چی هست که با ارضا شدن این شرط برطرف میشه؟

سلام....
یکی اینکه وقتی فایل صوتی رو در Resource قرار بدم نحوه فراخونیش فرق میکنه.حالا با استفاده از dll مربوط به windows media player یا طور دیگه که این رو بلد نیستم((( فکر میکنم با Assembly باید به اون دسترسی داشته باشم )))......
اگه ممکنه روش فراخوانی اون رو توضیح بدید.
و دوم اینکه اصلا بدون استفاده از dll مربوطه میشه صدا رو پخش کرد؟!........

gdevnb
شنبه 11 خرداد 1387, 19:57 عصر
سلام
اگه فایل wav باشه میشه.
تو msdn بگردی پیدا میکنی.

همیشه لزومی به استفاده از مدیا پلیر نیست موتورهای صدایی که برای بعضی بازیها نوشته میشه و OpenSource و مجانی هم هست.تو دات نت هم به خوبی کار میکنه.

محمدامین شریفی
شنبه 11 خرداد 1387, 20:08 عصر
سلام......
چطور میتونم یک فایل صوتی رو که به Resource اضافه کردم بدون استفاده از dll مربوط به media player داخل فرم پخش کنم. مثل:



SoundPlayer sound = SystemSounds.Beep;


با اجازه استاد آرژنگ
من و یکی از دوستان داریم با هم برنامه ای برای اجرای صوت وتصویر می نویسیم .تو هم اگه خواستی بیا با هم کار کنیم:http://barnamenevis.org/forum/showthread.php?t=105583

Sajjad.Aghapour
شنبه 11 خرداد 1387, 23:04 عصر
سلام
اگه فایل wav باشه میشه.
تو msdn بگردی پیدا میکنی.

همیشه لزومی به استفاده از مدیا پلیر نیست موتورهای صدایی که برای بعضی بازیها نوشته میشه و OpenSource و مجانی هم هست.تو دات نت هم به خوبی کار میکنه.

سلام دوست عزیز......
میشه یه مثال بزنید یا اینکه لینکی آموزشی در این مورد بذارید......
ممنون میشم......

alirzn
یک شنبه 12 خرداد 1387, 09:24 صبح
با دستور زیر میتونی به فایل های Recource دسترسی پیدا کنی. اما این دستور Byte بر میگردونه که باید این آرایه از Byte ها رو با stream به فایل تبدیل کنی و سپس اجاش کنی.

properties.recources.FILENAME

gdevnb
یک شنبه 12 خرداد 1387, 09:36 صبح
سلام دوست عزیز......
میشه یه مثال بزنید یا اینکه لینکی آموزشی در این مورد بذارید......
ممنون میشم......

سلام



How to: Play a Sound Embedded in a Resource from a Windows Form

private void playSoundFromResource(object sender, EventArgs e)
{
System.Reflection.Assembly a = System.Reflection.Assembly.GetExecutingAssembly();
System.IO.Stream s = a.GetManifestResourceStream("<AssemblyName>.chimes.wav");
SoundPlayer player = new SoundPlayer(s);
player.Play();
}

اَرژنگ
یک شنبه 12 خرداد 1387, 09:54 صبح
با دستور زیر میتونی به فایل های Recource دسترسی پیدا کنی. اما این دستور Byte بر میگردونه که باید این آرایه از Byte ها رو با stream به فایل تبدیل کنی و سپس اجاش کنی.

properties.recources.FILENAME
لطفاً مثال انجام این روش را بفرستید

محمدامین شریفی
یک شنبه 12 خرداد 1387, 12:07 عصر
لطفاً مثال انجام این روش را بفرستید
ما هم مجبور شدیم که از component های windows media player استفاده کنیم.
آیا برنامه ای دارید که مانند real player فایل ها را به صورت stream بخواند(از net)باشه شاهکاره

Sajjad.Aghapour
یک شنبه 12 خرداد 1387, 12:36 عصر
این مثال رو از codeproject گرفتم.ولی یه خورده قاطی کردم...........
در این مثال برای پخش صدا از API استفاده کرده........
یه نگاه بندازید ..........

Sajjad.Aghapour
یک شنبه 12 خرداد 1387, 20:13 عصر
سلام



How to: Play a Sound Embedded in a Resource from a Windows Form





private void playSoundFromResource(object sender, EventArgs e)

{

System.Reflection.Assembly a = System.Reflection.Assembly.GetExecutingAssembly();
System.IO.Stream s = a.GetManifestResourceStream("<AssemblyName>.chimes.wav");
SoundPlayer player = new SoundPlayer(s);
player.Play();


}




جناب gdevnb سلام.....
کد رو تست کردم ....نشد
اگه ممکنه یه مثال ضمیمه کنید.............................
ممنون

gdevnb
سه شنبه 14 خرداد 1387, 12:46 عصر
سلام
فایل wav رو به پروژت اضافه کن
بعد روش کلیک کن و در قسمت Properties در قسمت Build Action گزینه Embedded Resource رو انتخاب کن
بعد کد رو تست کن

System.Reflection.Assembly a = System.Reflection.Assembly.GetExecutingAssembly();
System.IO.Stream s = a.GetManifestResourceStream("WavePlayer.newalert.wav");
SoundPlayer player = new SoundPlayer(s);
player.Play();

Sajjad.Aghapour
سه شنبه 14 خرداد 1387, 14:23 عصر
ممنون جناب gdevnb
با اینکه دقیقا از کدهای شما استفاده کردم ولی جواب نگرفتم.با این حال از صبح تا حالا نشستم و جواب رو با استفاده از Winmm.dll پیدا کردم که در پست زیر جواب رو می ذارم تا عزیزان هم استفاده کنن....
ولی اگه خود شما از روشتون جواب گرفتید یه pm بدید یا اینکه برنامتون رو ضمیمه کنید.......
بازم ممنون..................
http://barnamenevis.org/forum/showpost.php?p=529227&postcount=295

gdevnb
سه شنبه 14 خرداد 1387, 16:04 عصر
سلام
اینم برنامه.

Sajjad.Aghapour
سه شنبه 14 خرداد 1387, 16:50 عصر
جناب gdevnb فکر کنم من منظورم رو واضح نگفته بودم.........
منظور من فایل های موجود در Properties --> Resources بود.اونها رو نمیشه اینطوری پخش کرد...
بازم ممنون از توجهتون........

gdevnb
پنج شنبه 16 خرداد 1387, 14:09 عصر
سلام
چرا اونم میشه و مشکلی نداره. به همون روشی که توزیح دادم فقط کد رو یکم تغییر بدی درست میشه.

System.IO.Stream file =
a.GetManifestResourceStream("WaveEmbeded.Resources.newalert.wav");