以下是问题:
我有一个Silverlight应用程序,我们希望一次播放8个Silverlight MediaElements。所有人都在播放.MP4视频。
前6个将立即加载,并在一两秒内完成MediaOpened。剩下的2有时(并非总是)在播放/报告他们准备好比赛之前需要几分钟。
如果我只玩6或更少,似乎没有问题。
以下是我发现的内容:
1)与文件无关。我可以切换MediaElements的顺序,我尝试打开的前6个会打开就好了,剩下的就会阻止。
2)不一定存在带宽问题(我尝试将文件压缩到几乎没有,同样的事情发生了)。
3)这不是IIS问题(我的服务器),我不认为,因为我已经最大化了同时连接。
4)我的客户端计算机根本没有挂钩。网络的一致性为25%,所以剩下的2个可能在那里被淘汰了,但是第7和第8的神奇之处是什么?
代码
我的代码似乎并不重要,但我会将其包含在内,因为人们似乎喜欢它:
foreach ( String Uri in UriList )
{
//For every URI we create a new MediaElement. In our test case this is 8 always.
MediaElement newMediaElement = new MediaElement();
// We use MediaOpened as our 'ready to play' event. Buffering remains at 0 for the
// two streams that don't work.
newMediaElement.MediaOpeened += new System.Windows.RoutedEventHandler(stream_MediaOpened);
//Set the source and add it to some list to be added to a grid later...
newMediaElement.Source = uri;
MediaElementList.Add( newMediaElement );
}
在此之后,MediaElementList将被添加到XAML中定义的Grid中。
如果人们认为更多代码会有所帮助,我会添加特定部分。就像我说的,我不认为代码会有用,但你永远不会知道......
其他研究
其他人有这个问题,但我们还没有找到解决方案。我们已经看到this和this以及this,但除了他们不知道之外,他们都没有给出任何答案。
编辑:好的,正如Kevev指出的那样,限制为6。有没有人知道这方面的任何方式?