PDA

View Full Version : play کردن یک فایل صوتی که در Resource پروژه قرار دارد



smt1383
سه شنبه 10 خرداد 1390, 13:40 عصر
با سلام خدمت دوستان
من یک فایل صوتی را در Resource پروژه قرار داده ام. حال چگونه می توان این فایل صوتی را به خاصیت Source یک کنترل MediaElementنسبت داد (در کد c# و نه در XAML)

Amir Oveisi
چهارشنبه 11 خرداد 1390, 11:26 صبح
به چه شکلی در resource قرار دادید؟

smt1383
دوشنبه 16 خرداد 1390, 10:23 صبح
در داخل پنجره Solution یک فولدر به نام Sound ایجاد کردم و فایل صوتی را در این فولدر Add کردم و سپس روی فایل صوتی راست کلیک کرده و در پنجره Properties خاصیت BuildAction را برابر Resource قرار دادم.

محمد باقری نسب
دوشنبه 16 خرداد 1390, 11:21 صبح
دوست عزیز به طور استاندارد متاسفانه امکان انجام این کار در پروژه WPF شما امکان پذیر نمی باشد. چرا که پخش صدا و ویدئو در پروژه WPF به عهده Media Player سیستم کاربر میباشد که مدیا پلیر ویندوز هم این قابلیت را پشتیبانی نمیکند. ولی ممکن است بتوانید کامپونتی پیدا کنید که به صورت stream صدا را پخش کند. که البته من بعید میدانم چون مدت زیادی به دنبال آن گشتم ولی چیزی پیدا نکردم.

Amir Oveisi
سه شنبه 17 خرداد 1390, 10:25 صبح
با استفاده از soundPlayer خود دات نت میتونید این کار رو انجام بدید:
Uri uri = new Uri(@"pack://application:,,,/<AssemblyName>;Component/<ResourcesPath>/<Sound File Name>");
SoundPlayer player = new SoundPlayer(Application.GetResourceStream(uri).Str eam);

به جای قسمت هایی که داخل <> قرار دارند، مقدار های متناظر در پروژه خودتون رو بنویسید.
موفق باشید

محمد باقری نسب
سه شنبه 17 خرداد 1390, 11:41 صبح
البته ممکنه بشه صدا رو با System.Media.SoundPlayer پخش کرد ولی هیچ کنترلی روش نمیشه داشت. نه ولوم نه موقعیت صدا!
این کلاس صرفا جهت پخش بیپ و یا صداهای ساده wav میباشد و نه مثلا موزیک پس زمینه و یا فایلهای با پسوند های دیگر (مثلا mp3)

Amir Oveisi
سه شنبه 17 خرداد 1390, 11:55 صبح
این کلاس صرفا جهت پخش بیپ و یا صداهای ساده wav میباشد و نه مثلا موزیک پس زمینه
مگه فایل .wav نمیتونه موزیک پس زمینه باشه؟!

محمد باقری نسب
سه شنبه 17 خرداد 1390, 12:12 عصر
چرا که نه عزیزم به قول ندامون!
ولی خوب بهتره حجمش رو هم در نظر بگیرید جانم. حدودا 10 برابر فرمت mp3! :متعجب:

مثلا یه موزیک تنها 2 دقیقه مدت زمانشه خوب!
- با فرمت wav حجم ما میشه بیش از 20MB
- با فرمت mp3 حجم ما میشه نزدیک به 2MB

انتخاب با شماست!

Amir Oveisi
سه شنبه 17 خرداد 1390, 14:16 عصر
انتخاب با بنده نیست، با کاربری هست که سوال رو مطرح کرده :)

پ.ن
لطفا از ارسال off-topic خودداری کنید.
با تشکر

مهدی فرزاد
چهارشنبه 18 خرداد 1390, 13:06 عصر
سلام
هرچند چیزی رو که الان میخوام بگم ممکنه جواب سئوال این تاپیک نباشه ولی با توجه به پست هایی که داده شده احساس کردم باید مطرح کنم
ببینید آقای باقری نسب ، در برنامه نویسی باید همیشه سعی کنیم از ابزار مناسب در جای مناسب برای اهداف مناسب استفاده کنیم
معمولا اجرای فایل های صوتی با فرمت های MP3 با حجم بالا و امکان عقب جلو کردن اون در برنامه هایی وجود داره که کاربر موزیک مورد نظرش رو خودش انتخاب میکنه و از هر جای هارد یا سی دی یا فلش مموری اونو برای شنیدن فراخونی میکنه و در اینجا MediaElement مناسب و مفید هست، پس حجمش اصلا مهم نیست و محل اون هم در ریسورس برنامه نیست
فایل های صوتی که در رسیور برنامه قرار میگیرن فایل هایی هستن که برای پخش اصوات کوتاه در برنامه بکار میرن مثل صدایی برای کیلک شدن دکمه و یا باز شدن یک پنجره و یا . . . و بعضن پخش آهنگی در پس زمینه ( که این کار زیاد مناسب به نظر نمیرسه) و این نیاز به فایلی با حجم بالا و فرمت MP3 و قابلیت عقب و جلو شدن نداره و با روشی که آقای اویسی بیان کردن اجرا میشه و لزومی به استفاده از MediaElement نداره

محمد باقری نسب
چهارشنبه 18 خرداد 1390, 14:05 عصر
حله آقا. ما هم چیزی غیر از این هایی که شما گفتین نگفتیم...