Воспроизведение видео в полноэкранном режиме

Flash Player 9 и более поздних версий, Adobe AIR 1.0 и более поздних версий

Flash Player и AIR позволяют создавать полноэкранные приложения для воспроизведения видео с поддержкой масштабирования видео во весь экран.

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

Дополнительные сведения см. в разделе « Работа в полноэкранном режиме ».

Включение полноэкранного режима для проигрывателя Flash Player в обозревателе

Прежде чем добавить возможность перехода в полноэкранный режим для проигрывателя Flash Player в обозревателе, ее необходимо включить через шаблон «Опубликовать» для приложения. Шаблоны, допускающие переход в полноэкранный режим, включают теги <object> и <embed> , содержащие параметр allowFullScreen . Следующий пример демонстрирует параметр allowFullScreen в теге <embed> .

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 
    id="fullScreen" width="100%" height="100%" 
    codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab"> 
    ... 
    <param name="allowFullScreen" value="true" /> 
    <embed src="fullScreen.swf" allowFullScreen="true" quality="high" bgcolor="#869ca7" 
        width="100%" height="100%" name="fullScreen" align="middle" 
        play="true" 
        loop="false" 
        quality="high" 
        allowScriptAccess="sameDomain" 
        type="application/x-shockwave-flash" 
        pluginspage="http://www.adobe.com/go/getflashplayer"> 
    </embed> 
    ... 
</object>

Во Flash выберите «Файл» > «Параметры публикации» и в открывшемся окне на вкладке «HTML» укажите шаблон «Только Flash — разрешить полноэкранный режим».

В Flex проверьте, что шаблон HTML включает теги <object> и <embed> , поддерживающие полноэкранный режим.

Переход в полноэкранный режим

При воспроизведении содержимого Flash Player в обозревателе переход видео в полноэкранный режим выполняется в ответ на щелчок мыши или нажатие клавиши. Например, в полноэкранный режим можно перейти, когда пользователь щелкнет кнопку с надписью «Полноэкранный режим» или выберет команду «Полноэкранный режим» из контекстного меню. Чтобы отвечать на действия пользователя, добавьте прослушиватель событий для объекта, на который направлено действие. Следующий код добавляет прослушиватель событий для кнопки, которую пользователь нажимает для перехода в полноэкранный режим.

var fullScreenButton:Button = new Button(); 
fullScreenButton.label = "Full Screen"; 
addChild(fullScreenButton); 
fullScreenButton.addEventListener(MouseEvent.CLICK, fullScreenButtonHandler); 
 
function fullScreenButtonHandler(event:MouseEvent) 
{ 
    stage.displayState = StageDisplayState.FULL_SCREEN;     
 
}

Код инициирует переход в полноэкранный режим, задавая свойству Stage.displayState значение StageDisplayState.FULL_SCREEN . Этот код масштабирует всю рабочую область до размеров полного экрана, изменяя размер видео пропорционально занимаемой им части рабочей области.

Свойство fullScreenSourceRect позволяет указать определенную часть рабочей области для масштабирования до полного экрана. Сначала определите прямоугольник, который нужно масштабировать до размера полного экрана. Затем назначьте его свойству Stage.fullScreenSourceRect . Эта версия функции fullScreenButtonHandler() добавляет две дополнительные строки кода, которые масштабируют на весь экран только видео.

private function fullScreenButtonHandler(event:MouseEvent) 
{ 
    var screenRectangle:Rectangle = new Rectangle(video.x, video.y, video.width, video.height); 
    stage.fullScreenSourceRect = screenRectangle; 
    stage.displayState = StageDisplayState.FULL_SCREEN; 
}

Несмотря на то, что в этом примере обработчик события вызывается в ответ на щелчок мыши, данный способ перехода в полноэкранный режим одинаково подходит для Flash Player и AIR. Определите прямоугольник, который требуется масштабировать, а затем задайте свойство Stage.displayState . Дополнительные сведения см. в cправочнике ActionScript® 3.0 для платформы Adobe® Flash® Platform .

В полном примере, который приведен ниже, добавляется код, который создает подключение и объект NetStream для видео и начинает его воспроизведение.

package 
{ 
    import flash.net.NetConnection; 
    import flash.net.NetStream; 
    import flash.media.Video; 
    import flash.display.StageDisplayState; 
    import fl.controls.Button; 
    import flash.display.Sprite; 
    import flash.events.MouseEvent; 
    import flash.events.FullScreenEvent; 
    import flash.geom.Rectangle; 
     
    public class FullScreenVideoExample extends Sprite 
    {     
        var fullScreenButton:Button = new Button(); 
        var video:Video = new Video(); 
 
        public function FullScreenVideoExample() 
        { 
            var videoConnection:NetConnection = new NetConnection(); 
            videoConnection.connect(null); 
             
            var videoStream:NetStream = new NetStream(videoConnection); 
            videoStream.client = this; 
 
            addChild(video); 
             
            video.attachNetStream(videoStream); 
             
            videoStream.play("http://www.helpexamples.com/flash/video/water.flv"); 
             
            fullScreenButton.x = 100; 
            fullScreenButton.y = 270; 
            fullScreenButton.label = "Full Screen"; 
            addChild(fullScreenButton); 
            fullScreenButton.addEventListener(MouseEvent.CLICK, fullScreenButtonHandler); 
        } 
 
        private function fullScreenButtonHandler(event:MouseEvent) 
        {  
            var screenRectangle:Rectangle = new Rectangle(video.x, video.y, video.width, video.height); 
            stage.fullScreenSourceRect = screenRectangle; 
            stage.displayState = StageDisplayState.FULL_SCREEN;  
        }     
         
        public function onMetaData(infoObject:Object):void 
        { 
            // stub for callback function 
        } 
    } 
}

Функция onMetaData() является функцией обратного вызова для обработки метаданных видео, если они имеются. Функцией обратного вызова называется функция, которую среда выполнения вызывает в ответ на некоторые типы событий. В этом примере функция onMetaData() является условием, необходимым для выполнения метода. Дополнительные сведения см. в разделе « Написание методов обратного вызова для метаданных и ключевых точек »

Выход из полноэкранного режима

Пользователь может выйти из полноэкранного режима с помощью одного из сочетаний клавиш, например, нажав клавишу Esc. Выйти из полноэкранного режима можно и с помощью кода ActionScript, задав свойству displayState значение StageDisplayState.NORMAL . Следующий код выключает полноэкранный режим, когда происходит событие netStatus сетевого статуса NetStream.Play.Stop.

videoStream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); 
 
private function netStatusHandler(event:NetStatusEvent) 
{ 
    if(event.info.code == "NetStream.Play.Stop") 
        stage.displayState = StageDisplayState.NORMAL; 
}

Аппаратное ускорение полноэкранного режима

При изменении масштаба прямоугольного сегмента рабочего стола до размера всего экрана Flash Player или AIR использует аппаратное ускорение, если оно доступно и включено. Среда выполнения использует видеоадаптер компьютера для ускорения увеличения масштаба видео или части рабочей области до размера полного экрана. В этих случаях приложения Flash Player часто могут работать более эффективно путем включения класса StageVideo вместо класса Video (или класса Camera; Flash Player 11.4/AIR 3.4 и более поздних версий).

Дополнительные сведения об аппаратном ускорении в полноэкранном режиме см. в разделе « Работа в полноэкранном режиме ». Дополнительные сведения о классе StageVideo см. в разделе « Использование класса StageVideo для визуализации с аппаратным ускорением ».