Я пытаюсь создать звуковое приложение, что-то вроде Spotify, используя библиотеку с открытым исходным кодом nAudio. Приложение предназначено только в качестве личного архива моих собственных идей песни.
Большинство функций прекрасно работает, но WaveChannel32 (New WaveFileReader) не поддерживает URL, кажется.
Теперь сами звуковые файлы находятся в папке на сервере, который также является SQL Server.
Я не уверен, на каком подходе лучше всего подключиться к серверу и получить звуковые файлы. Как можно подключиться к серверу? Можно ли настроить сервер в качестве веб-сервера? Достаточно ли будет указать 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