从互联网/服务器传输声音(并传递给nAudio声音播放器)

时间:2009-08-19 19:56:14

标签: vb.net httpwebrequest streaming audio

我正在尝试使用nAudio开源库创建一个声音应用程序,有点像Spotify。该应用程序仅用作我自己的歌曲创意的个人存档。 大多数功能都很好,但WaveChannel32(New WaveFileReader)不支持它看起来的URL。

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

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

编辑:我添加了我试图转换为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

1 个答案:

答案 0 :(得分:1)

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

Play audio from a stream using C#

干杯, 塞巴斯蒂安