gpt4 book ai didi

c# - 在 Windows 8 中使用 go-between 进行流式传输

转载 作者:可可西里 更新时间:2023-11-01 08:13:44 25 4
gpt4 key购买 nike

我想将数据从服务器流式传输到我的 Windows 8 商店(以前称为 Metro)应用程序中的 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);

是否有一种解决方案允许我流式传输音频,但允许我在完成从远程端读取后将流复制到磁盘?

最佳答案

我没有尝试过以下想法,但它可能会奏效:您可以开始将 Web 数据流式传输到一个文件中,然后在几秒钟后(用于缓冲)将该文件传递给 MediaElement。

我注意到 MediaElement 在打开正在写入的文件时可能很挑剔,但我已经看到它起作用了。不过,我不能说为什么它有时有效而有时无效。

关于c# - 在 Windows 8 中使用 go-between 进行流式传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12347487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com