Как играть не буферизованный WAV с реализацией MediaStreamSource в Silverlight 4?

Фон

Я пытаюсь передать волновой файл потоком в использовании Silverlight 4 реализация MediaStreamSource, найденная здесь. Проблема, я хочу играть файл, в то время как это все еще буферизует, или, по крайней мере, дайте пользователю некоторую визуальную обратную связь, в то время как это буферизует. На данный момент мой код похож на это:

private void button1_Click(object sender, RoutedEventArgs e)
{
    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri(App.Current.Host.Source, "../test.wav"));
    //request.ContentType = "audio/x-wav";
    request.AllowReadStreamBuffering = false;

    request.BeginGetResponse(new AsyncCallback(RequestCallback), request);
}

private void RequestCallback(IAsyncResult ar)
{
    this.Dispatcher.BeginInvoke(delegate()
    {
        HttpWebRequest request = (HttpWebRequest)ar.AsyncState;
        HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(ar);

        WaveMediaStreamSource wavMss = new WaveMediaStreamSource(response.GetResponseStream());

        try
        {
            me.SetSource(wavMss);
        }
        catch (InvalidOperationException)
        {
            // This file is not valid
        }
        me.Play();
    });
}

Проблема состоит в том что после установки request.AllowReadStreamBuffering = false поток не поддерживает поиск, и вышеупомянутая реализация выдает исключение (имейте в виду, что я поместил часть логики установки положения в if (stream.CanSeek) блок):

Чтение не поддерживается на основном потоке, когда буферизация отключена

Вопрос

Существует ли способ играть поток WAV, не буферизуя его заранее в Silverlight 4?

14
задан Dor Cohen 27 January 2013 в 12:22
поделиться