Flex: переключение между битрейтами в прямом эфире с использованием компонента VideoDisplay - PullRequest
0 голосов
/ 20 июля 2010

Я передаю свойству source компонента VideoDisplay объект DynamicStreamingVideoSource с 3 различными элементами динамического живого потока, описанными в этом XML, на ваше рассмотрение:

src="rtmp://88.87.56.214:1935/live/fashiontv_tmo_h.stream" bitrate="19200" src="rtmp://88.87.56.214:1935/live/fashiontv_tmo_m.stream" bitrate="9000" src="rtmp://88.87.56.214:1935/live/fashiontv_tmo_l.stream" bitrate="3600"

Но проигрыватель затем запускает поток с самым низким битрейтом, из этих 3. Разве не предполагалось, что он пойдет на поток с самым высоким битрейтом, который может просматривать конечный пользователь? Все 3 потока были индивидуально протестированы, и все они доступны для просмотра.

Спасибо, Ливиу

Ответы [ 3 ]

1 голос
/ 05 февраля 2016

Я это исправил !!!

Я знаю, что этот ответ 5,5 лет спустя, но это все равно может кому-то помочь. У меня была та же проблема, и я смог ее исправить после нескольких часов поиска ответа. Все, что вам нужно, это иметь ненулевое значение для буфера в медиаплеере.

Примеры:

Использование Spark VideoDisplay:

<s:VideoDisplay id="rtmpABRVideo" width="320" height="240" initialize="rtmpABRVideo.mx_internal::videoPlayer.bufferTime=2">
  <s:DynamicStreamingVideoSource host="rtmp://localhost:1935/live" streamType="live">
    <s:DynamicStreamingVideoItem streamName="webcam_1000" bitrate="1000" />
    <s:DynamicStreamingVideoItem streamName="webcam_500" bitrate="500" />
    <s:DynamicStreamingVideoItem streamName="webcam_150" bitrate="150" />
  </s:DynamicStreamingVideoSource> 
</s:VideoDisplay>

Использование компонентов OSMF:

var dynResource:DynamicStreamingResource = new DynamicStreamingResource('rtmp://localhost/live');
dynResource.urlIncludesFMSApplicationInstance = false;
dynResource.streamItems = Vector.<DynamicStreamingItem>([
                                new DynamicStreamingItem("mp4:webcam_150", 150, 320, 240),
                                new DynamicStreamingItem("mp4:webcam_500", 500, 320, 240),
                                new DynamicStreamingItem("mp4:webcam_1000", 1000, 320, 240)
                          ]);

var videoElement:VideoElement = new VideoElement();
videoElement.resource = dynResource;

var mediaPlayerSprite:MediaPlayerSprite = new MediaPlayerSprite();
mediaPlayerSprite.width = 320;
mediaPlayerSprite.height = 240;
mediaPlayerSprite.media = videoElement;
mediaPlayerSprite.mediaPlayer.bufferTime = 2;

addChild(mediaPlayerSprite);

Надеюсь, это было полезно для кого-то там!

0 голосов
/ 20 июля 2010

Я разместил в своем блоге пост с некоторым исходным кодом, который очень легко понять некоторое время назад.

проверить здесь

0 голосов
/ 20 июля 2010

Я был почти уверен, что компонент VideoDisplay отобразит любой исходный URL, который вы отправите.Не видя код, я не уверен, что происходит.

Если вы хотите отобразить другой поток битрейта, вам придется указать компоненту VideoDisplay переключить URL.Если вы хотите сделать автоматическое переключение битрейта «на лету», я считаю, что это нужно делать на сервере, а не на клиенте.

...