NAudio 的错误,在 MemoryStream,VB 中播放 mp3
Posted
技术标签:
【中文标题】NAudio 的错误,在 MemoryStream,VB 中播放 mp3【英文标题】:Bug with NAudio, play mp3 in MemoryStream, VB 【发布时间】:2015-06-24 17:28:52 【问题描述】:我有一个功能可以从运行良好的资源中读取我的 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】:我建议不要在WaveOut
上不断调用 Init。相反,只需要一个(看起来你也可以只拥有一个Mp3FileReader
),然后在Play_Sound
函数中,设置mp3Reader.Position = 0
并重新启动你的WaveOut
实例(如果它停止了)。 (我从您的代码 sn-p 中假设您永远不想同时播放多个声音实例)。
【讨论】:
谢谢,这样更好。以上是关于NAudio 的错误,在 MemoryStream,VB 中播放 mp3的主要内容,如果未能解决你的问题,请参考以下文章
PCM Wave 文件中的数据长度使用 MemoryStream 和 WaveFileWriter
记录来自 NAudio WaveIn 的输入,并将输出保存到字节数组