我有IIS 10,其中包含2 x mp4视频。 3和4 GB。如果我在控制台.NET应用程序中运行以下代码,它工作正常。如果我在Silverlight 5中运行相同的内容OpenReadCompleted
从未针对4Gb视频触发,但适用于3Gb。
IE11在Windows 10 x64上为64,Silverlight为x64。
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
Start();
}
public void Start()
{
//var addr = @"http://localhost/small.mp4";
var addr = @"http://localhost/large.mp4";
WebClient webClient = new WebClient();
webClient.OpenReadCompleted += (s, x) =>
{
try
{
Debug.WriteLine("Got result: " +
(x.Result == null ? "null" :
x.Result.CanRead.ToString()));
}
catch (Exception ex)
{
Debug.WriteLine($"Got exception {ex}");
}
};
Debug.WriteLine($"Requesting stream {addr}");
webClient.OpenReadAsync(new Uri(addr));
}
}
手头的实际任务是使更大的视频(我有多达50Gb的视频)与媒体元素一起使用。但它永远不会超过“开放”状态。在剥离所有内容的同时,我发现如果我使用文件流来处理大型视频媒体元素,但如果我尝试使用网络流,则不会,这导致我做了最简单的测试 - 单独打开网络流。它不起作用。
此代码适用于Silverlight,适用于小视频和大视频:
FileStream fs = new FileStream(@"c:\media\large.mp4", FileMode.Open);
ssme.SetSource(fs);
因此问题在于通过HTTP传递。
关于如何从这一点进一步调查的任何想法?
编辑:目前我只是想从URL打开一个流。 WebClient不起作用 - 如何实现此任何其他建议?