actionscrip3中的摄像头捕获

时间:2012-03-04 13:39:47

标签: flash actionscript camera

我想在客户端实现与flash的视频聊天,在服务器端实现我的自定义服务器(python)。我是flash和actionscript 3的新手。我只想收集帧并将它们发送到服务器。我阅读了一些actionscript的文档,并希望以这种方式实现它:

我想控制数据结构,通过计时器收集帧并将它们存储在ByteArray中,而不是将其发送到服务器并重新发送给聊天伙伴。

然后在计时器刻度我可以快照图像并收集它们:

    var cam:Camera = Camera.getCamera(); 
    var vid:Video = new Video();
    vid.attachCamera(cam);
    private var fpsFrame:ByteArray = new ByteArray();

    //on timer event
    ...
    imgBD = new BitmapData(vid.width,vid.height); 
    imgBD.draw(vid);
    imgBitmap=new Bitmap(imgBD);

    imgBA = imgBitmap.bitmapData.getPixels(rect1)        

    //fpsFrame.writeObject(imgBD);
    //append frame
    fpsFrame.writeBytes(imgBA)
    imgBA.clear();

    //than i can add sound here and send to server
    ...

这样做是否合适?哪种结构更适合实施?

1 个答案:

答案 0 :(得分:0)

如果市场上有很多选择,你为什么要这样做呢? FMS,Wowza,Red5 - 这些媒体服务器能够在几分钟内建立您的视频聊天。整个Flash媒体基础架构围绕媒体服务器工作:Camera,Video,NetStream。数据会自动编码,发送,保存,加载和解码。

你想手动将screengrabs绘制成位图,压缩它们(在AS3中有png,jpeg甚至flv编码器),抓取声音块,压缩它们,将数据发送到另一方,手动解码所有东西并放入这一切都在一起?我打赌你会遇到性能,网络流量和同步问题。

如果您现在需要可行的解决方案,请使用媒体服务器。如果你是一个黑客,并且必须知道它是否可能,你应该尝试这样做(8创建一个没有媒体服务器的文库并将其发布到GitHub。这很酷。