В данной статье детально рассматривается разработка видео флэш плеера с возможностями использования функции «Multi Bitrate».
В основе, представленного здесь, видео флэш плеера лежит компонент от компании Adobe – FLVPlayback 2.5, а также классы: DynamicStream, DynamicStreamItem.
Функция «Multi Bitrate» позволяет осуществлять динамическое переключение между потоками с разным качеством.
Создаем новый объект vid, который является экземпляром класса FLVPlayback, а также контейнер для него — объект container типа UIComponent. Помещаем в контейнер объект vid с помощью метода addChild.
\\Создаем новый экземпляр класса FLVPlayback
var vid = new FLVPlayback();
\\Создаем новый экземпляр класса UIComponent
var container:UIComponent = new UIComponent();
container.addChild(vid);
Создаем новый объект dsi, являющийся экземпляром класса DynamicStreamItem.
\\Создаем новый экземпляр класса DynamicStreamItem
var dsi:DynamicStreamItem = new DynamicStreamItem();
Для передачи информации о адресе FMIS сервера и приложения используем свойство uri (Uniform Resource Identifier) объекта dsi , присваиваем строковое значение адреса FMIS – сервера, а также серверного приложения – «rtmp://адрес сервера/приложение/»
dsi.uri = "rtmp://адрес сервера/приложение/";
Добавляем объекту dsi поток вещания в разных вариантах качества используя метод addStream, в аргументах которому передаем название потока и его качество в Кб/сек («dsi.addStream(«название потока», качество потока);»).
\\Добавляем потоки вещания в разном качестве
dsi.addStream("livestream200", 200);
\\....
\\....
\\....
dsi.addStream("livestream1000", 1000);
Управление качеством осуществляет функция switchQuality, в аргументах которой должен быть передан управляющий строковый параметр. В зависимости от переданного параметра осуществляется переключение качества потока, путем вызова метода switchUp или switchDown соответственно, у объекта netStream.
private function switchQuality (param:String):void
{
switch (param)
{
case "UP":
DynamicStream(vid.getVideoPlayer (vid.activeVideoPlayerIndex)
.netStream).switchUp();
break;
case "DOWN":
DynamicStream(vid.getVideoPlayer(vid.activeVideoPlayerIndex)
.netStream).switchDown();
break;
}
}
В пространстве Application создаем два объекта типа Button и в событиях MouseEvent.CLICK ссылаемся на функцию switchQuality в аргументах которой передаем строковый параметр «UP» или «DOWN» в зависимости от назначения объекта.
<mx:Button label="+" click=" switchQuality ("UP");" />
<mx:Button label="-" click=" switchQuality ("DOWN");" />
Управление воспроизведением потока осуществляет функция startPlay. В этой функции у объекта vid вызывается метод play2 и в качестве параметра передается ссылка на объект dsi. После вызова этой функции объект vid производит подключение к FMS и запрашивает поток, указанный в объекте dsi, начинается воспроизведение потока. Для обеспечения возможности переключения качества потока в «ручном» режиме, требуется передать методу manualSwitchMode объекта netStream параметр true.
private function startPlay ():void
{
vid.play2(dsi);
DynamicStream(vid.getVideoPlayer(vid.activeVideoPlayerIndex)
.netStream).manualSwitchMode(true);
}
Для реализации функции управления воспроизведением потока добавляем в пространство Application объект типа Button в событие MouseEvent.CLICK ссылаемся на функцию startPlay.
<mx:Button label="Старт" click=" startPlay();" />