2015-03-25 3 views
1

ok Я пытаюсь выяснить, является ли это ошибкой, или я делаю что-то не по порядку здесь.StageVideo в режиме FullScreen

Я на макинтоше под управлением OS X 10.10.3 Flex SDK 4.12 с Air 4.0

Я пытаюсь играть StageVideo из NetStream, что кормление в с карты захвата. Все работает отлично, пока я не хочу, чтобы видео воспроизводилось в полноэкранном режиме. NetStream подает видеоролик 720x480, и если я установил видовое окно Stagevideo на любой размер, он будет точно оценивать масштаб 1: 1 и масштабировать его соответственно. Но, когда я иду в полноэкранном режиме и устанавливаю видовое окно на ширину и высоту сцены, видео, кажется, правильно масштабируется ... однако только верхние 720x480 пикселей видеороликов (как будто они замаскированы размерами видеоисточника ?! ?). Если я затем удалю бежать, чтобы выйти из полноэкранного режима (с шириной и высотой моего приложения, установленным на мой размер экрана даже) ... видео на сцене правильно заполняет весь экран (но, конечно же, с помощью панели инструментов для инструментов).

На данный момент я думаю, что это ошибка? Я попытался изменить порядок событий (сначала в полноэкранном режиме, затем сначала запустите видео ... сначала запустите видео, затем перейдите в полноэкранный режим и сбросьте область просмотра), но получите одинаковые результаты в любом порядке.

protected function init():void{ 
      stage.scaleMode = StageScaleMode.NO_SCALE; 
      stage.addEventListener(StageVideoAvailabilityEvent.STAGE_VIDEO_AVAILABILITY, onStageVideoState); 
     } 

     private function onStageVideoState(event:StageVideoAvailabilityEvent):void { 
      stage.removeEventListener(StageVideoAvailabilityEvent.STAGE_VIDEO_AVAILABILITY, onStageVideoState); 
      if(event.availability == StageVideoAvailability.AVAILABLE){ 
       _video = stage.stageVideos[0]; 
       _video.addEventListener(StageVideoEvent.RENDER_STATE, onStageVideoRenderStateChange); 

       // this captures the cam and feeds it through a NetStream to the StageVideo... this part works fine 
       var capture:CaptureDevice = new CaptureDevice(); 
       capture.play(ffmpeg, _video); 
      } else { 
       // borked 
      } 
     } 

     private function onStageVideoRenderStateChange(event:Object):void { 
      stage.addEventListener(FullScreenEvent.FULL_SCREEN, onFullScreen); 
      stage.displayState = StageDisplayState.FULL_SCREEN; 
     } 

     private function onFullScreen(event:FullScreenEvent):void{ 
      stage.removeEventListener(FullScreenEvent.FULL_SCREEN, onFullScreen); 
      _video.viewPort = new Rectangle(0,0,stage.stageWidth, stage.stageHeight); 
     } 

кто-нибудь еще видел эту странность? Вот кадр из этой маскировки в полноэкранном режиме: weird masking of stagevideo

+0

Вы нашли решение? – davivid

+0

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

ответ

0

У меня возникла аналогичная проблема, за исключением игры 1920 x 1080 mp4.

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

private function init():void 
{ 
    //Dodgy Timer Hack 
    //Fixes fullscreen issue with stageVideo 
    var timer:Timer = new Timer(5000,1); 
    timer.addEventListener(TimerEvent.TIMER, addedToStage); 
    timer.start(); 
} 

private function addedToStage(e:Event):void 
{ 
    stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE; 
    stage.scaleMode = StageScaleMode.SHOW_ALL; 
    stage.align = StageAlign.TOP_LEFT; 

    initVideo(); 
}