PDA

View Full Version : مشکل در پخش صدای پشت سر هم



Mohsen.
چهارشنبه 26 مهر 1391, 17:19 عصر
سلام
خیلی به کمکتون نیاز دارم.
من برنامه تبدیل اعداد به حروف نوشتم. حالا برای پخش صدای اون اعداد آدرس های صدا ها رو داخل یک آرایه گذاشتم و با استفاده از کد زیر گفتم که تا وقتی که صدای قبلی پخشش تموم نشده صدای بعدی رو پخش نکن.
اما جواب نمیده.
لطفا کمک کنید.

Dim Sound As New System.Media.SoundPlayer()
For Each address As String In SLocation
Sound.SoundLocation = address
Sound.Load()
Sound.Play()
While (Sound.IsLoadCompleted = False)
End While
Next

مهرداد صفا
چهارشنبه 26 مهر 1391, 20:17 عصر
سلام دوست عزیز
شما میتوانید از متود PlaySync به جای Play استفاده کنید که البته این هم مشکلاتی دارد مثلا اینکه بقیه قسمتهای برنامه هم تا وقتی اجرای فایل تمام نشده غیر فعال است. در کل به نظر من بهتر است که برای اجرای فایلهای صوتی از یک کلاس یا کامپوننت دیگر مثل System.Windows.Media.MediaPlayer استفاده کنید. به هر حال کد شما به این صورت تغییر می کند:

Dim Sound As New System.Media.SoundPlayer()
For Each address As String In SLocation
Sound.SoundLocation = address
Sound.Load()
Sound.PlaySync()
Next


موفق باشید.

مهرداد صفا
چهارشنبه 26 مهر 1391, 21:29 عصر
برای اینکه در حال پخش فایلها برنامه به کار خود ادامه دهد میتوانید از یک thread مجزا برای پخش فایلها استفاده کنید. کد زیر به همین روش فایلهای موجود در پوشه C:\windows\media را به ترتیب اجرا میکند:

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim Sound As New System.Media.SoundPlayer()
Dim SLocation As String() = System.IO.Directory.GetFiles("c:\windows\media\")
Dim Thread2 As New Threading.Thread(New Threading.ThreadStart(Sub()
For Each address As String In SLocation
Try
Sound.SoundLocation = address
Sound.Load()
Sound.PlaySync()
Catch
End Try
Next
End Sub))
Thread2.Start()
MsgBox("the main thread is working!")
End Sub

_lotus_
دوشنبه 02 تیر 1393, 15:16 عصر
سلام
با System.Media.SoundPlayer میشه فایل mp3 رو باز کرد

systam
جمعه 06 تیر 1393, 13:25 عصر
سلام یک نگاه بنداز شاید بدردت بخوره
یا علی
(http://barnamenevis.org/showthread.php?56973-%D8%AA%D8%A7%D9%BE%DB%8C%DA%A9-%D9%87%D8%A7%DB%8C-%D9%85%D9%81%DB%8C%D8%AF&p=1993911&viewfull=1#post1993911)

_lotus_
شنبه 07 تیر 1393, 08:59 صبح
سلام دوست عزیز
شما میتوانید از متود PlaySync به جای Play استفاده کنید که البته این هم مشکلاتی دارد مثلا اینکه بقیه قسمتهای برنامه هم تا وقتی اجرای فایل تمام نشده غیر فعال است. در کل به نظر من بهتر است که برای اجرای فایلهای صوتی از یک کلاس یا کامپوننت دیگر مثل System.Windows.Media.MediaPlayer استفاده کنید. به هر حال کد شما به این صورت تغییر می کند:

Dim Sound As New System.Media.SoundPlayer()
For Each address As String In SLocation
Sound.SoundLocation = address
Sound.Load()
Sound.PlaySync()
Next


موفق باشید.

من این مورد را با thread پیاده سازی کردم ولی یک مشکل هست:
چطور میشه همین کد را پیاده سازی کرد به اضافه اینکه در وسط پخش یک فایل هر وقت بخواهیم آن را متوقف کنیم؟