Ich versuche das Shoutcast-Streaming zu meinem MediaElement über MediaStreamSource zu implementieren. Hier ist ein Code mit einigen Grundlagen. Mit der ReadData-Methode kann ich rohe Audiodaten (MP3-Samples) herunterladen, meine Frage ist, wie kann ich den Stream auf die MediaStreamSource einstellen. Auf diese Weise funktioniert es nicht (es kompiliert und es gibt keine Fehler beim MediaFailed-Ereignis, aber ich kann keinen Ton hören). Vielleicht sollte ich all das in meiner benutzerdefinierten ShoutcastMediaStreamSource implementieren? Es gibt kein Problem mit festem Stream, nur mit nicht behobenem. Kann mir jemand einen Rat geben?WP7 Shoutcast mit MediaStreamSource
Auf dem WP7 gibt es keine Möglichkeit, das "useUnsafeHeaderParsing" zu setzen, so dass ich keine HTTP-Header mit Shoutcast-Metadaten bekommen kann - nur Rohdaten. In der ShoutcastMediaStreamSource habe ich Code von ManagedMediaHelpers implementiert.
Dank
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://radiozetmp3-02.eurozet.pl:8400/;");
request.Method = "GET";
request.Headers["Icy-MetaData"] = "1";
request.UserAgent = "WinampMPEG/5.09";
request.AllowReadStreamBuffering = false;
request.BeginGetResponse(new AsyncCallback(RequestComplete), request);
allDone.WaitOne();
ShoutcastMediaStreamSource smss = new ShoutcastMediaStreamSource(stream);
player.SetSource(smss); // MediaElement
player.Play();
}
public void RequestComplete(IAsyncResult r)
{
HttpWebRequest request = (HttpWebRequest)r.AsyncState;
HttpWebResponse response = request.EndGetResponse(r) as HttpWebResponse;
stream = response.GetResponseStream();
IAsyncResult res = stream.BeginRead(buffer, 0, buffer.Length, callback, null);
allDone.Set();
}
public void ReadData(IAsyncResult r)
{
int bytes = stream.EndRead(r);
if (bytes == 0) { Debug.WriteLine("No bytes readed"); }
else
{
Debug.WriteLine("readed: " + buffer.Length.ToString());
stream.BeginRead(buffer, 0, buffer.Length, callback, buffer);
}
}
haben Sie dies herausgefunden, ich versuche, das gleiche zu tun. Irgendwelche Leads? –
Nur für Kicks, übergeben Sie keine ICY-Header, verwenden Sie einfach reguläre HTTP, und laden Sie es mit einem Semikolon in der URL, wie folgt: 'http: //10.12.13.14: 8000 /;' – Brad