Spark VideoDisplay с долгим ожиданием высокой загрузки ЦП в Google Chrome (и Opera) - PullRequest
0 голосов
/ 06 сентября 2011

Я создал сайт Flex, который воспроизводит видео с использованием компонента Spark VideoDisplay. При выборе VideoDisplay загружается в PopUpManager.

Это прекрасно работает во всех браузерах, за исключением того, что Google Chrome запускается значительно дольше, во время которого загрузка процессора достигает максимума, а затем возвращается в исходное состояние после начала воспроизведения видео.

Я проследил, что игрок заявляет, что он проходит, и они выглядят следующим образом:

  1. Загрузка
  2. готов (зависает целую вечность с большим процессором)
  3. буферизация
  4. Воспроизведение (сразу после буферизации, загрузка процессора снижается, видео воспроизводится плавно)

Что может быть причиной того, что это временно зависает в Chrome гораздо дольше? Я думал, что могу ожидать одинаковую функциональность и поведение во всех браузерах, так как Flash - это просто плагин, который работает как отдельный процесс?

Спасибо!

Редактировать: Кажется, что в Опере тоже самое. Есть ли между ними что-то общее, что могло бы объяснить это поведение?

Редактировать 2: Спасибо за ваш ответ, вот соответствующий код:

MXML:

    <s:Group id="videoPopup"
             click="closePopupHandler(event)">

        <s:Rect width="100%" height="100%">
            <s:fill>
                <s:SolidColor color="#2a2a2a"/>
            </s:fill>
        </s:Rect>

        <spinner:Spinner id="spinner" 
                         tickColor="#ffffff"
                         horizontalCenter="0" verticalCenter="0"/>

        <s:VideoDisplay id="videoDisplay" width="100%" height="100%"
                        updateComplete="videoDisplay_updateCompleteHandler(event)"
                        mediaPlayerStateChange="videoDisplay_mediaPlayerStateChangeHandler(event)"
                        complete="videoCompleteHandler(event)"/>

        <graphics:CloseButton id="closeVideoButton" visible="false" width="60" height="60" top="10" right="10"/>

        <s:Label id="videoCredit" text="Filmed &amp; produced by Engine Creative"
                 bottom="25" right="10" alpha="0"
                 fontFamily="HelveticaEmbedded" fontSize="11" color="#cccccc"/>

    </s:Group>

Инициирование actionScript:

                        PopUpManager.addPopUp(this.videoPopup, FlexGlobals.topLevelApplication as DisplayObject, true);
                        videoPopup.width = Math.min(1280, stage.stageWidth * 0.9);
                        videoPopup.height = Math.min(720, stage.stageHeight * 0.9);
                        PopUpManager.centerPopUp(this.videoPopup);

                        hidePlayOverlay.play();
                        showVideoCredit.end();
                        spinner.play();
                        showCreditTimer.addEventListener(TimerEvent.TIMER_COMPLETE, showCredit);
                        showCreditTimer.reset();
                        showCreditTimer.stop();             

                        if(!videoDisplay.source || videoDisplay.source != _asset.source)
                            videoDisplay.source = _asset.source;

                        videoDisplay.seek(0);
                        videoDisplay.play();

И соответствующие обработчики событий:

        protected function videoDisplay_updateCompleteHandler(event:FlexEvent):void
        {
            Debug.log("video update complete");
            if (videoDisplay.videoObject)
                videoDisplay.videoObject.smoothing = true;
        }

        protected function videoDisplay_mediaPlayerStateChangeHandler(event:MediaPlayerStateChangeEvent):void
        {
            Debug.log("player state: " + event.state);

            showCreditTimer.reset();
            if (event.state == MediaPlayerState.PLAYING)
            {
                showCreditTimer.start();                    
                showCloseButton();
                spinner.stop();
            }                   
        }

Еще раз спасибо!

1 Ответ

0 голосов
/ 12 сентября 2011

Аппаратное ускорение частично поддерживается по умолчанию, если у вас есть поддерживаемый графический процессор.Если вам нужна полная поддержка 3d, вам нужно использовать StageVideo и установить для параметра wmode в html значение 'direct'.Вы должны читать больше об этом .

...