Vb.net 从互联网/服务器播放声音(并传送至nAudio soundplayer)

Vb.net 从互联网/服务器播放声音(并传送至nAudio soundplayer),vb.net,httpwebrequest,streaming,audio,Vb.net,Httpwebrequest,Streaming,Audio,我正在尝试创建一个完善的应用程序,有点像使用nAudio开源库的Spotify。该应用程序只是作为我自己歌曲想法的个人档案。 大多数功能都很好,但WaveChannel32(新的WaveFileReader)似乎不支持URL 现在,声音文件本身位于服务器(也是SQL server)上的文件夹中。 我不确定哪种方法最适合连接到服务器并获取声音文件。如何连接到服务器?是否将服务器设置为Web服务器?指定服务器IP地址就足够了吗 最后,如何创建应用程序可以使用的internet流? 可能首先应该对声音

我正在尝试创建一个完善的应用程序,有点像使用nAudio开源库的Spotify。该应用程序只是作为我自己歌曲想法的个人档案。 大多数功能都很好,但WaveChannel32(新的WaveFileReader)似乎不支持URL

现在,声音文件本身位于服务器(也是SQL server)上的文件夹中。 我不确定哪种方法最适合连接到服务器并获取声音文件。如何连接到服务器?是否将服务器设置为Web服务器?指定服务器IP地址就足够了吗

最后,如何创建应用程序可以使用的internet流? 可能首先应该对声音文件进行某种缓冲,在一个线程中运行。在第二个线程中运行的实际播放?我该怎么做呢

编辑:我添加了试图转换为VB.NET的代码,但收到错误消息: 无法将“System.IO.MemoryStream”类型的值转换为“String”

转换后的代码如下所示:

Public Shared Sub PlayMp3FromUrl(ByVal url As String)
        Using ms As New MemoryStream()
            Using stream As Stream = WebRequest.Create(url).GetResponse().GetResponseStream()
                Dim buffer As Byte() = New Byte(32768) {}
                Dim read As Integer = 0
                While (read = stream.Read(buffer, 0, buffer.Length)) > 0
                    ms.Write(buffer, 0, read)
                End While
            End Using

            ms.Position = 0

            Using blockAlignedStream As WaveStream = New BlockAlignReductionStream(WaveFormatConversionStream.CreatePcmStream(New Mp3FileReader(ms)))
                Using waveOut As New WaveOut(0, 500, Nothing)
                    waveOut.Init(blockAlignedStream)
                    waveOut.Play()
                    While (blockAlignedStream.Position < blockAlignedStream.Length)
                        System.Threading.Thread.Sleep(100)
                    End While
                End Using
            End Using
        End Using
    End Sub
Public共享子PlayMp3FromUrl(ByVal url作为字符串)
将ms用作新内存流()
使用stream作为stream=WebRequest.Create(url).GetResponse().GetResponseStream()
作为字节()的Dim缓冲区=新字节(32768){}
Dim读取为整数=0
而(read=stream.read(buffer,0,buffer.Length))>0
ms.Write(缓冲区,0,读取)
结束时
终端使用
女士职位=0
使用blockAlignedStream作为WaveStream=新的BlockAlignReductionStream(WaveFormatConversionStream.CreatePcmStream(新的Mp3FileReader(ms)))
将waveOut用作新的waveOut(0,500,无)
waveOut.Init(blockAlignedStream)
waveOut.Play()
While(blockAlignedStream.Position
看看这个,它包含如何使用NAudio从URL播放MP3的代码:

干杯,
Sebastian

看看这个,它包含如何使用NAudio从URL播放MP3的代码:

干杯,
Sebastian

好的,我在第一篇文章中添加了一些代码,只是试图将C#代码转换为VB.NET,但是生成器给了我错误。该链接的代码中似乎有错误,至少在转换到VB.NET之后。我收到错误消息:“类型'System.IO.MemoryStream'的值无法转换为'String'”这是在“New BlockAlignReductionStream(WaveFormatConversionStream.CreatePcmStream(New Mp3FileReader(ms))”行中。正如NAudio代码项目站点上所指出的,需要一个版本的NAudio post 2008年12月。好的,我在第一篇文章中添加了一些代码,我只是想把C#代码转换成VB.NET,但是生成器给了我错误。该链接的代码中似乎有错误,至少在转换到VB.NET之后。我收到错误消息:“System.IO.MemoryStream”类型的值无法转换为“String”。这在“New BlockAlignReductionStream(WaveFormatConversionStream.CreatePcmStream(New Mp3FileReader(ms))”行中。正如NAudio代码项目站点上所述,2008年12月后需要NAudio版本。