6

MediaStreamSource を介して MediaElement に Shoutcast ストリーミングを実装しようとしています。ここにいくつかの基本的なコードがあります。ReadData メソッドを使用すると、生のオーディオ データ (MP3 サンプル) をダウンロードできます。私の質問は、ストリームを MediaStreamSource に設定する方法です。この方法では機能しません (コンパイルされ、MediaFailed イベントにエラーはありませんが、音は聞こえません)。これらすべてをカスタム ShoutcastMediaStreamSource に実装する必要があるでしょうか? 非固定のみで固定ストリームでも問題ありません。誰かアドバイスをくれませんか?

WP7 では、「useUnsafeHeaderParsing」を設定する可能性がないため、shoutcast メタデータを含む http ヘッダーを取得できません。生データのみです。ShoutcastMediaStreamSource では、ManagedMediaHelpers のコードをいくつか実装しました。

ありがとう

    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);
        }
    }
4

2 に答える 2

2

カスタムMediaStreamSourceを開発する必要があります。

私のプロジェクトの1つのために開発したプロトタイプは、https ://skydrive.live.com/redir.aspx?cid = eb0868f2135b874c&resid = EB0868F2135B874C!1037&parid = EB0868F2135B874C!169&authkey =!AGSYfCVvCasGArIにあります。

于 2011-12-10T00:01:32.530 に答える
0

コードでバージョン =2 を試してください。1行のコードを変更した後、今はうまくいきます

于 2013-12-03T17:26:47.367 に答える