好的我想知道这是一个错误还是我在这里做了一些无序的事情。
我在运行OS X 10.10.3的mac上 Flex SDK 4.12 with Air 4.0
我正试图从一个从捕获卡输入的NetStream播放StageVideo。这一切都完美无缺,直到我希望视频全屏播放。 NetStream正在输入一个720x480的视频流。如果我将Stagevideo视口设置为任意大小,它会将1:1缩放视为正常并相应地缩放。但是,当我进入全屏并将视口设置为舞台宽度和高度时,视频似乎正确缩放...但是只有视频的顶部720x480像素显示(好像它被视频源尺寸掩盖了?! ?)。如果我然后点击“退出”退出全屏(我的应用宽度和高度设置为我的屏幕尺寸)...舞台视频正确填充整个屏幕(但当然显示mac工具栏)。
此时我认为这是一个错误?我已经尝试颠倒事件的顺序(首先是全屏,然后是初始化视频...首先是init视频,然后是全屏并重置视口)但是在任何一个顺序中得到相同的结果。
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);
}
其他人看到这种奇怪吗?这是全屏遮蔽的镜头:
答案 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();
}