Потоковая передача звука с интернета / сервера (и передача в nAudio soundplayer) - PullRequest
1 голос
/ 19 августа 2009

Я пытаюсь создать звуковое приложение, что-то вроде 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

1 Ответ

1 голос
/ 20 августа 2009

Взгляните на это, оно содержит код о том, как воспроизвести MP3 с URL с помощью NAudio:

Воспроизведение аудио из потока с использованием C #

Ура, Себастьян

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...