2009-08-19 6 views
1

J'essaie de créer une application audio, un peu comme Spotify en utilisant la bibliothèque open source nAudio. L'application est uniquement conçue comme une archive personnelle de mes propres idées de chansons. La plupart des fonctionnalités fonctionnent très bien mais WaveChannel32 (New WaveFileReader) ne prend pas en charge les URL qu'il semble. Maintenant, les fichiers audio eux-mêmes se trouvent dans un dossier sur un serveur, qui est également un serveur SQL. Retour au début | Je ne suis pas sûr de l'approche qui serait la meilleure pour se connecter au serveur et obtenir les fichiers audio. Comment se connecterait-il réellement au serveur? Serait-on configurer le serveur en tant que serveur web? Serait-il suffisant de spécifier l'adresse IP du serveur?Diffusion de son depuis Internet/serveur (et passage à nAudio soundplayer)

Et enfin, comment puis-je créer un flux Internet que l'application peut utiliser? Il devrait probablement y avoir une sorte de mise en tampon du fichier son d'abord, en cours d'exécution dans un thread. Et la lecture réelle en cours d'exécution dans un deuxième fil? Et comment pourrais-je faire ça?

Edit: J'ai ajouté le code que j'essayé de convertir en VB.NET, mais je reçois le message d'erreur: Valeur de type « System.IO.MemoryStream » ne peut pas être converti en « String »

le code converti ressemble à ceci:

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 

Répondre

1

Jetez un oeil à cela, il contient du code sur la façon de lire un fichier MP3 à partir d'une URL à l'aide NAudio:

Play audio from a stream using C#

Cheers, Sebastian

+0

Ok, j'ai ajouté du code au premier message, essayant juste de convertir le code C# en VB.NET, mais les générateurs m'ont donné des erreurs. On dirait qu'il y a quelque chose qui ne va pas dans le code à partir de ce lien, au moins il semble que ce soit après la conversion en VB.NET. Je reçois le message d'erreur: "Valeur de type 'System.IO.MemoryStream' ne peut pas être converti en 'String'" Ceci est à la ligne "New BlockAlignReductionStream (WaveFormatConversionStream.CreatePcmStream (New Mp3FileReader (ms)))" –

+0

Comme indiqué sur le site du projet de code NAudio, une version de NAudio post décembre 2008 est requise. –

Questions connexes