ShoutcastストリーミングをMediaStreamSource経由でMediaElementに実装しようとしています。ここに基本的なコードがあります。 ReadDataメソッドを使用すると、生のオーディオデータ(MP3サンプル)をダウンロードできます。私の質問は、ストリームをMediaStreamSourceに設定する方法です。この方法では動作しません(コンパイルされ、MediaFailedイベントにエラーはありませんが、サウンドは聞こえません)。たぶん私は私のカスタムShoutcastMediaStreamSourceでこれらのすべてを実装する必要がありますか?固定ストリームには問題はありませんが、固定ではありません。誰かに私に助言を与えることができますか?WP3 Shoutcast with MediaStreamSource
WP7では、「useUnsafeHeaderParsing」を設定することはできないので、shoutcastメタデータを使用してHTTPヘッダーを取得することはできません - 生データのみ。 ShoutcastMediaStreamSourceでは、ManagedMediaHelpersのコードを実装しました。カスタムMediaStreamSourceを開発する必要があり
おかげ
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);
}
}
あなたはこれを理解しましたか、私は何かをやろうとしています。すべてのリード? –
ちょうどキックのために、ICYヘッダーを渡さず、通常のHTTPを使用し、URLにセミコロンをつけてロードしてください:http:///.12.13.14:8000 /; – Brad