PDA

View Full Version : پخش فایل صوتی در برنامه



alizanganeh
جمعه 20 آبان 1390, 23:06 عصر
سلام میخوام یک فایل صوتی در برنامه پخش کنم چیکار کنم
لطفا مراحل کامل رو برام توضیح بدید

و اینکه آیا میشه که یک موزیک در پس زمینه ی برنامه پخش کرد بدون وجود کنترلر

و چه پسوند هایی رو میشه در این دستور شما اجرا کرد
ممنون

محسن واژدی
شنبه 21 آبان 1390, 08:11 صبح
سلام
میتوانید از توابع mci برای اجرای یک فایل صورتی mp3,wav,mid استفاده کنید:

Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long

برای گشودن و اجرای فایل صوتی:

Private Sub Command1_Click()
Dim FileName$
FileName = "C:\test.mp3"
mciSendString "close my_alias_nam", 0, 0, 0
If mciSendString("open " & FileName & " type MPEGVideo alias my_alias_nam", 0, 0, 0) = 0 Then
mciSendString "play my_alias_nam from 0", 0, 0, 0
End If
End Sub


برای ایست و بستن:

Private Sub Command2_Click()
mciSendString "stop my_alias_nam", 0, 0, 0
mciSendString "close my_alias_nam", 0, 0, 0
End Sub

ایست موقت:

Private Sub Command3_Click()
mciSendString "pause my_alias_nam", 0, 0, 0
End Sub


و ادامه پخش:

Private Sub Command4_Click()
mciSendString "play my_alias_nam", 0, 0, 0
End Sub


my_alias_nam هم نامی است دلبخواه که به عنوان هویت فایل صوتی بمنظور دسترسی به فایل اجرا شده (همانند نام اشیاء) پس برای اجرای بیش از یک فایل صوتی نام جدیدی را جایگزین این رشته میکنیم

موفق باشید

mr-adler
یک شنبه 22 آبان 1390, 01:18 صبح
سلام
هر کاری کردم نشد که نشد :

Private Sub Command3_Click()
Dim FileName$
FileName = "g:\red.wmv"
mciSendString "close red.wmv", 0, 0, 0
If mciSendString("open " & FileName & "type MPEGVideo alias red.wmv", 0, 0, 0) = 0 Then
mciSendString "play red.wmv from 0", 0, 0, 0
End If
End Sub
این کد هاییه که نوشتم . نمیدونم کجاش رو اشتباه نوشتم .:ناراحت:

MohammadGh2011
یک شنبه 22 آبان 1390, 13:08 عصر
سلام عليکم
چه خطايي ميگيره؟

FileName = "g:\red.wmv"
شايد به خاطر اينه که شما از فرمت فيلم (red.wmv)استفاده کرديد.

mr-adler
دوشنبه 23 آبان 1390, 00:59 صبح
سلام
نمیدونم. هیچ خطایی نمیگیره و اجرا هم نمیشه(اهنگ رو اجرا نمیکنه). اگه ممکنه این کد رو برای خودتون کپی کنید و اگه اجرا شد کد اجرا شده رو بزارید تا ببینم اشکال از کجاست . هر چی سعی کردم نشد که نشد:ناراحت:.

ممنونم:لبخندساده:

راستی با mp3 هم امتحان کردم نشد . اشکال از نوشتن کدم هست

M.T.P
دوشنبه 23 آبان 1390, 11:06 صبح
این نمونه رو دانلود کنید ببینید چطوره...
پخش wma و mp3 (http://barnamenevis.org/showthread.php?272115-%D9%BE%D8%AE%D8%B4-wma-%D9%88-mp3&highlight=%D9%BE%D8%AE%D8%B4+mp3+wma)

mr-adler
دوشنبه 23 آبان 1390, 15:18 عصر
سلام
مشکل برطرف شد . فقط...:
77842
نکته مهم اینه که در قسمت مشخص شده حتما یاید فاصله باشه . و دوم اینکه برنامه باید کامپایل شده باشه تا عمل کنه(البته بعضی مواقع هم بدون کامپایل عمل میکنه مثل کد جناب M.T.P (http://barnamenevis.org/member.php?132020-M.T.P) . اگه در برنامه شما اهنگ رو به پوشه دیگه ای منتقل کنیم باز هم پخش نمیشه . نتیجه میگیریم کامپایل کنیم درد سرش کمتره ! )
در ضمن این کد پسوند های mp3 و wma رو پخش کرد اما wmv رو پخش نکرد(به نظرم اهنگ های همراه با تصویر رو پخش نمیکنه...)

فقط یه مورد باقی میمونه و اونم قسمت قهوه ای رنگ مشخص شده در بالاست . اگه امکانش هست در موردش توضیح بدید . alias یعنی چی؟ کارش چیه؟ این کلمه تو تعریف api هم استفاده میشه... ایا میشه کد دیگری به جای این تکه کد نوشت؟

ممنونم....:قلب:

محسن واژدی
دوشنبه 23 آبان 1390, 21:38 عصر
فقط یه مورد باقی میمونه و اونم قسمت قهوه ای رنگ مشخص شده در بالاست . اگه امکانش هست در موردش توضیح بدید . alias یعنی چی؟ کارش چیه؟ این کلمه تو تعریف api هم استفاده میشه... ایا میشه کد دیگری به جای این تکه کد نوشت؟

سلام علیکم
در توابع api میتوانیم از نام های دیگری که از آنها به عنوان نام مستعار یاد میکنند بجای نام اصلی تابع استفاده کنیم، در صورت تغییر نام، بایستی نام اصلی آنرا در بخش alias قرار دهیم
به عنوان مثال در تابع زیر MyMessageBeep نام دلبخواهی است که ما به تابع اختصاص داده ایم حال آنکه نام اصلی تابع MessageBeep میباشد:

Private Declare Function MyMessageBeep Lib "user32" Alias "MessageBeep" (ByVal wType As Long) As Long

Private Sub Command1_Click()
MyMessageBeep 16
End Sub



موفق باشید