2010-11-30 6 views
6

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); 
     } 
    } 
+0

あなたはこれを理解しましたか、私は何かをやろうとしています。すべてのリード? –

+0

ちょうどキックのために、ICYヘッダーを渡さず、通常のHTTPを使用し、URLにセミコロンをつけてロードしてください:http:///.12.13.14:8000 /; – Brad

答えて

0

試し版= 2:

あなたは私がここに私のプロジェクトの一つのために開発された1のプロトタイプを見つけることができます。これは、コードの1行を変更した後、今私のために動作します

関連する問題