我尝试从资源加载 mp3,它成功了。但我想要循环播放 我四处搜寻,却一无所获…… 这是代码:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim mp3 As MemoryStream = New MemoryStream(My.Resources.RequiemAtDusk)
Dim read As Mp3FileReader = New Mp3FileReader(mp3)
Dim waveOut As WaveOut = New WaveOut
waveOut.Init(read)
waveOut.Play()
End Sub
所以我做到了:
Public Class LoopStream
Inherits WaveStream
Private sourceStream As WaveStream
Public Sub New(ByVal sourceStream As WaveStream)
Me.sourceStream = sourceStream
Me.EnableLooping = True
End Sub
Public Property EnableLooping As Boolean
Public Overrides ReadOnly Property WaveFormat As WaveFormat
Get
Return sourceStream.WaveFormat
End Get
End Property
Public Overrides ReadOnly Property Length As Long
Get
Return sourceStream.Length
End Get
End Property
Public Overrides Property Position As Long
Get
Return sourceStream.Position
End Get
Set(ByVal value As Long)
sourceStream.Position = value
End Set
End Property
Public Overrides Function Read(ByVal buffer As Byte(), ByVal offset As Integer, ByVal count As Integer) As Integer
Dim totalBytesRead As Integer = 0
While totalBytesRead < count
Dim bytesRead As Integer = sourceStream.Read(buffer, offset + totalBytesRead, count - totalBytesRead)
If bytesRead = 0 Then
If sourceStream.Position = 0 OrElse Not EnableLooping Then
Exit While
End If
sourceStream.Position = 0
End If
totalBytesRead += bytesRead
End While
Return totalBytesRead
End Function
End Class
从资源时间循环播放 MP3!
Private waveOut As WaveOut
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If waveOut Is Nothing Then
Dim mp3file As MemoryStream = New MemoryStream(My.Resources.RequiemAtDusk) '' You can use your MP3 file here
Dim reader As Mp3FileReader = New Mp3FileReader(mp3file)
Dim [loop] As LoopStream = New LoopStream(reader)
waveOut = New WaveOut()
waveOut.Init([loop])
waveOut.Play()
Else
waveOut.[Stop]()
waveOut.Dispose()
waveOut = Nothing
End If
End Sub
这对我有用:)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) 处理 MyBase.Load
定时器1.间隔= 1000 定时器1.开始
结束子
将 WaveOut 调暗为 WaveOut = 新 WaveOut
函数soundtrack()
Dim mp3file As MemoryStream = New MemoryStream(My.Resources.RequiemAtDusk) '' You can use your MP3 file here
Dim reader As Mp3FileReader = New Mp3FileReader(mp3file)
waveOut.Init([reader)
waveOut.Play()
End Function
私有子 Timer1_Tick(发送者作为对象,e 作为 EventArgs)Handless Timer1.Tick
如果 waveout.PlaybackState = 0 那么 原声带() 结束如果
结束子