StageVideo в полноэкранном режиме
Хорошо, я пытаюсь выяснить, если это ошибка или я делаю что-то не в порядке здесь.
Я использую Mac OS X 10.10.3 Flex SDK 4.12 с Air 4.0
Я пытаюсь воспроизвести StageVideo с NetStream, который поступает с карты захвата. Это все работает отлично, пока я не хочу, чтобы видео воспроизводилось во весь экран.NETStream передает видеопоток 720x480, и если я установил для окна просмотра Stagevideo любой размер, он учитывает масштаб 1:1 и масштабируется соответственно. Но, когда я перехожу в полноэкранный режим и устанавливаю область просмотра на ширину и высоту сцены, видео, кажется, масштабируется правильно... однако только верхние 720x480 пикселей видео показывают (как если бы оно маскировалось размерами источника видео?!?). Если затем я нажимаю escape, чтобы выйти из полноэкранного режима (с шириной и высотой моего приложения, равными даже размеру моего экрана)... сценическое видео должным образом заполняет весь экран (но, конечно, с панелями инструментов Mac).
На данный момент я думаю, что это ошибка? Я попытался изменить порядок событий (сначала в полноэкранном режиме, затем инициализировать видео... сначала инициировать видео, затем перейти в полноэкранный режим и сбросить окно просмотра), но получить те же результаты в любом порядке.
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);
}
кто-нибудь еще видел эту странность? Вот снимок маскировки в полноэкранном режиме:
1 ответ
У меня возникла похожая проблема, за исключением воспроизведения 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();
}