我想在我的Windows 8 Store应用程序中将数据从服务器流式传输到MediaElement
。但是,在流式传输时,我需要“记录”该流以便在重新请求时可以从缓存中提供,因此我不希望直接将URL提供给MediaElement
。
目前的障碍是MediaElement.SetSource()
只接受IRandomAccessStream
,而不是System.IO.Stream
,而后者是我从HttpWebResponse.GetResponseStream()
获得的。
以下是我现有的代码,但它无法正常工作:
var request = WebRequest.CreateHttp(url);
request.AllowReadStreamBuffering = false;
request.BeginGetResponse(ar =>
{
var response = ((HttpWebResponse)request.EndGetResponse(ar));
// this is System.IO.Stream:
var stream = response.GetResponseStream();
// this needs IRandomAccessStream:
MediaPlayer.SetSource(stream, "audio/mp3");
}, null);
有没有一个解决方案可以让我流式传输音频,但在从远程端读取完毕后允许我将流复制到磁盘上?
InMemoryRandomAccessStream
,直接流式传输非常好。问题在于将流分发到两个不同的位置。 - Vegard Larsen.Source
属性,但是它没有生效(我在代码深处得到一个空引用异常),而且我还没有弄清如何从URL创建IRandomAccessStream
。但我会今天继续努力。 - esskarIRandomAccessStream
,只需设置me.Source = new Uri("http://...");
就可以了... - Vegard Larsen