同时播放多个Silverlight媒体元素
本文关键字:Silverlight 媒体 元素 播放 | 更新日期: 2023-09-27 18:09:11
问题如下:
我有一个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中定义的网格中。
如果人们认为更多的代码会有所帮助,我会添加特定的部分。就像我说的,我不认为代码会有用,但你永远不会知道。。。
其他研究
其他人也有这个问题,但我们还没有找到解决方案。我们已经看到了这个,这个和这个,但除了他们不知道之外,没有人给出任何答案。
编辑:好吧,正如Kevev所指出的,有一个6的限制。有人知道有什么办法吗?
Silverlight 4 HTTP网络堆栈限制为6个并发连接。
请参阅此处的客户端HTTP处理部分:
并发连接限制从2 提高到6