Algorithmus verbesserung von webradio... ich komm nicht weiter
-
Ich schreibe derzeit an einer für viele eher kleinen Sache, trotzdem komm ich nicht weiter. Es handelt sich um einen Webradio wie Technobase,... etc.
Das ganze ist in C# geschrieben und verwendet zum decoden http://naudio.codeplex.com/
Ich kann das zwar Streamen und auch einen Teil abspielen doch 1. ist der Audiostream unvollständig ( sprich läuft nicht flüssig lässt kleine Zeiten aus ) und 2. stoppt das ganze nach ner zeit.
Jetzt versuch ich einfach mal zu erklären was ich mache und zeige anschließend noch Code. Habs nich ins C# Forum gestellt, da es weniger was mit der Syntax zu tun hat sondern mehr mit dem Algorithmus:
Also ich habe zum einen eine ganz normale Sub/Funkion welche das Abspielen als Aufgabe hat. Dann noch einen Backgroundworker(neuer thread) der das Streamen als Aufgabe hat. Beim Backgroundworker wird eben das ganze mit einer httpwebrequest/httprespone in einen IO.Stream geschrieben und dann in der AbspielSub abgespielt.
Hier noch der Code:
private void button1_Click(object sender, EventArgs e) { PlayMp3FromUrl(); } public Stream memstream = new MemoryStream(); public void PlayMp3FromUrl(/*string url hier würde noch url mitgegeben werden.*/) { backStream.RunWorkerAsync(); System.Threading.Thread.Sleep(2000); Console.Beep(500, 1000); memstream.Position = 0; using (WaveStream blockAlignedStream = new BlockAlignReductionStream( WaveFormatConversionStream.CreatePcmStream( new Mp3FileReader(memstream)))) { using (WaveOut waveOut = new WaveOut(WaveCallbackInfo.FunctionCallback())) { while (true) { waveOut.Init(blockAlignedStream); waveOut.Play(); while (waveOut.PlaybackState == PlaybackState.Playing) { System.Threading.Thread.Sleep(100); } } } } } private void backStream_DoWork(object sender, DoWorkEventArgs e) { using (Stream stream = WebRequest.Create("http://listen.technobase.fm/tunein-dsl-asx").GetResponse().GetResponseStream()) { byte[] buffer = new byte[32768]; int read; while ((read = stream.Read(buffer, 0, buffer.Length)) > 0) { memstream.Write(buffer, 0, read); } } } }
Ich wär euch wirlich dankbar wenn mir einer helfen könnte bin noch in den Startlöchern mit programmieren und auch noch recht jung also bitte etwas Nachsicht mit Programmierstil und Rechtschreibung
danke