Actionscript 3 利用Flex中的实时视频-快照问题
我正在做一个项目,在那里我必须制作一个注释视频播放器 基本上,我遵循了本教程[1],作者介绍了如何使用Flex在自己的网络摄像头上绘制(在本例中仅为一个矩形) 一切都进行得很顺利,但现在我想添加一个侦听器来获取图像的快照(我所绘制的内容+网络摄像头图像),然后将其保存到我的计算机上 我已经创建了监听器,但问题是,该监听器只保存来自web摄影机的图像,而不保存我的绘图(即使我将该绘图添加到摄影机中) 我对Flex/Flash没有任何经验,所以可能我做错了smth 你能帮帮我吗Actionscript 3 利用Flex中的实时视频-快照问题,actionscript-3,flash,flex4,video-capture,Actionscript 3,Flash,Flex4,Video Capture,我正在做一个项目,在那里我必须制作一个注释视频播放器 基本上,我遵循了本教程[1],作者介绍了如何使用Flex在自己的网络摄像头上绘制(在本例中仅为一个矩形) 一切都进行得很顺利,但现在我想添加一个侦听器来获取图像的快照(我所绘制的内容+网络摄像头图像),然后将其保存到我的计算机上 我已经创建了监听器,但问题是,该监听器只保存来自web摄影机的图像,而不保存我的绘图(即使我将该绘图添加到摄影机中) 我对Flex/Flash没有任何经验,所以可能我做错了smth 你能帮帮我吗 [1]http://
[1]http://narinderkumar.wordpress.com/2012/02/16/drawing-on-live-video-in-flex/这个例子效果很好-我看不出你的代码片段有什么问题,但也许你只是在视频上画vis图形,在这种情况下,图形层就在相机后面。。。希望帽子有帮助;)
private function save():void {
var bitmapData:BitmapData = new BitmapData(videoDisplay.width,videoDisplay.height);
bitmapData.draw(videoDisplay);
var ba:ByteArray = (new PNGEncoder()).encode(bitmapData);
(new FileReference()).save(ba, "doodle.png");
}
package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.media.Camera;
import flash.media.Video;
public class cameratest extends Sprite
{
private var holder:Sprite;
private var layover:Sprite;
private var display:Sprite;
public function cameratest()
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
var cam:Camera = Camera.getCamera();
var video:Video =new Video(cam.width, cam.height);
video.attachCamera(cam);
//holder hollds the video and on top the layover to draw on
holder = new Sprite();
stage.addChild(holder);
holder.addChild(video);
//layover to draw on
layover = new Sprite();
holder.addChild(layover);
//will show the snapshot
display = new Sprite();
display.x= 350;
stage.addChild(display);
//listener for onclick do snapshot
stage.addEventListener(MouseEvent.CLICK, drawAndSave);
}
private function drawAndSave(E:Event=null):void{
layover.graphics.beginFill(0xff0000,1);
layover.graphics.drawCircle(10,10,10);
var bmd:BitmapData=new BitmapData(holder.width,holder.height);
bmd.draw(holder);
var bmp:Bitmap = new Bitmap(bmd,'auto',true);
display.addChild(bmp);
}
}
}