一次播放多个Silverlight MediaElements

时间:2011-09-21 20:50:34

标签: c# silverlight mediaelement

以下是问题:

我有一个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中。

如果人们认为更多代码会有所帮助,我会添加特定部分。就像我说的,我不认为代码会有用,但你永远不会知道......

其他研究

其他人有这个问题,但我们还没有找到解决方案。我们已经看到thisthis以及this,但除了他们不知道之外,他们都没有给出任何答案。

编辑:好的,正如Kevev指出的那样,限制为6。有没有人知道这方面的任何方式?

1 个答案:

答案 0 :(得分:1)

Silverlight 4 HTTP网络堆栈限制为6个并发连接。

请参阅“客户端HTTP处理”部分下的here

  

并发连接限制从2提高到6