Воспроизведение нескольких Silverlight MediaElements одновременно - PullRequest
0 голосов
/ 22 сентября 2011

Вот проблема:

У меня есть приложение 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.

Если люди думают, что больше кода будет полезно, я добавлю конкретные части. Как я уже сказал, я не думаю код будет полезен, но вы никогда не знаете ...

Другие исследования

У других людей есть эта проблема, но мы не нашли решения. Мы видели это и это и это , но никто из них не дал никакого ответа, кроме как они не знают.

РЕДАКТИРОВАТЬ : Хорошо, так что есть предел 6, как указывает Кевев. Кто-нибудь знает как-нибудь обойти это?

1 Ответ

1 голос
/ 22 сентября 2011

Сетевой стек HTTP Silverlight 4 ограничен 6 одновременными подключениями.

См. здесь в разделе «Обработка клиентского HTTP»:

Предел одновременного подключения увеличен с 2 до 6

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...