2012-05-31 183 views
1

我有一個自助服務終端,需要使用flash攝像頭視頻的人羣圖像。我們使用16:9相機,但我們需要的圖像是4:3。所以我剛剛進入舞臺4:3,並將視頻添加到它,並在信息亭UI上解決。Crop Flash攝像頭圖像

但是...我使用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); 

任何想法?

+0

爲什麼不使用[Camera.setMode()](http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/Camera.html#setMode())? – Art

+0

你怎麼抓住視頻幀?你可以發佈該代碼嗎? – redhotvengeance

+0

@Art setMode未設置爲相同寬高比似乎會擠壓視頻。 –

回答

0

屏蔽video不會有所作爲,因爲BitmapDatadraw方法是從video本身繪圖(其中不包括屏蔽)如果你把video和麪具到另一個Sprite和對Sprite使用draw,然後面具會起作用。

但是,最好的解決方案可能是調整BitmapData正在繪製的矩形。你也可能會想調整BitmapData的寬度和高度,以及:

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

基本上,你定義一個矩形爲clipRect參數,而這個矩形的大小設置爲最終尺寸(和縱橫比)你想要捕捉什麼。