NAudio的Bug,在MemoryStream,VB中播放mp3

时间:2015-06-24 17:28:53

标签: vb.net naudio

我有一个函数可以从我的资源中读取我的mp3,效果非常好。

不幸的是,如果我在我的按钮上传递鼠标30次,40次或50次,最终导致waveOut.init( {" AlreadyAllocated calling waveOutOpen "} )

崩溃
Public waveOut As WaveOut = New WaveOut

Private Sub Panel_Bouton_MouseEnter(sender As Object, e As EventArgs) Handles Panel_Bouton.MouseEnter
    Play_Sound()
End Sub

Public Sub Play_Sound()
    Dim mp3file As MemoryStream = New MemoryStream(My.Resources.Clic)
    'Clic.mp3 is in my Resources
    Dim mp3Reader As Mp3FileReader = New Mp3FileReader(mp3file)

    If waveOut.PlaybackState = PlaybackState.Playing Then
        waveOut.Stop()
        ' I tried this but no effect...
    End If

    waveOut.Init(mp3Reader)
    waveOut.Play()
End Sub

1 个答案:

答案 0 :(得分:0)

我建议不要在WaveOut上不断调用Init。相反,只需要一个(看起来你也可以只有一个Mp3FileReader),然后在Play_Sound函数中设置mp3Reader.Position = 0并重新启动WaveOut个实例如果它停止了(我假设你的代码片段中你不想一次播放多个声音实例)。