1

我有一个使用 Flash 网络摄像头视频拍摄人们图像的信息亭。我们使用的是 16:9 的相机,但我们需要拍摄 4:3 的图像。所以我只是制作了 4:3 的舞台并将视频添加到其中,然后在 kiosk UI 上解决了它。

但是...我正在使用 ExternalInterface 通过 base64 编码的 jpg 将这些图像发送到 javascript,效果很好。但是,当我抓取一个视频帧发送过来时,它当然仍然是 16:9。

所以我需要裁剪视频,以便当我抓取它(或添加它的显示对象)时,它只是 4:3 图像。

我尝试使用口罩,但由于某种原因不需要。

video = new Video(videoHeight, videoWidth); //backwards on purpose
video.x = -(videoWidth - stage.stageWidth) /2; //Center X
video.y = -(videoHeight - stage.stageHeight) /2; //Center Y


var maskSprite:Sprite = new Sprite();
maskSprite.graphics.drawRect(0,0,640,480);

video.mask(maskSprite);

有任何想法吗?

4

1 回答 1

0

遮罩video不会产生影响,因为 的draw方法BitmapData是从自身绘制video(不包括遮罩)如果您将video遮罩放入另一个遮罩Spritedraw在其上使用Sprite,那么遮罩将起作用。

然而,最好的解决方案可能是调整BitmapData正在绘制的矩形。您可能还需要调整宽度和高度BitmapData

var bmd:BitmapData = new BitmapData(640, 480);
bmd.draw(video, null, null, null, new Rectangle(0, 0, 640, 480));

基本上,您正在为clipRect参数定义一个矩形,并将该矩形的大小设置为您要捕获的最终大小(和纵横比)。

于 2012-05-31T20:22:46.820 回答