【发布时间】:2015-03-25 17:05:05
【问题描述】:
好的,我想弄清楚这是一个错误还是我在这里做的事情有问题。
我在运行 OS X 10.10.3 的 Mac 上 Flex SDK 4.12 和 Air 4.0
我正在尝试播放来自采集卡的 NetStream 中的 StageVideo。在我希望视频全屏播放之前,这一切都很完美。 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);
}
其他人见过这种奇怪的东西吗?这是全屏遮罩的照片:
【问题讨论】:
-
您找到解决方案了吗?
-
很遗憾没有...当我发现这一点时,我最终为我正在从事的项目使用了一个常规视频。很想知道答案,但如果你们修补并找到我没有找到的东西。
标签: actionscript-3 apache-flex air stagevideo