背景如何在Silverlight 4中使用MediaStreamSource实现播放非缓冲WAV?
我试图使用流式传输的实现媒体流在Silverlight 4的波形文件中找到here。问题是我想在缓冲时播放文件,或者至少在缓冲时给用户一些视觉反馈。现在我的代码看起来像这样:
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中缓冲它?