2012-03-04 75 views
0

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

我想控制数据结构,通过定时器收集帧并将它们存储在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 
    ... 

是好形式给出这样做呢?什么结构更好地用于实现?

+0

不,我认为这不是一个好方法,我不认为分别捕获位图数据和发送音频会使视频聊天成功,尤其是当Flash/ActionScript中有其他现成的机制用于将视频发送到流媒体服务器时 – 2012-03-04 13:48:19

+0

为什么单独使用?我可以在一帧中将视频发送给我,因为我了解随行流将我的服务器限制为某些Flash格式,我希望通过我的数据格式来实现它,并为此寻找更好的工具 – evg 2012-03-04 14:31:08

+0

如果您必须发送只有修改的位(不是整个位图),例如用户的脸部变化,但背景大部分保持静止(除了移动窗帘等)。 – Manish 2012-03-04 14:53:54

回答

0

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

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

如果您现在需要工作解决方案,请使用媒体服务器。如果你是一个黑客并且知道它是否可行,你应该尝试去做(8制作一个没有媒体服务器的库,然后将其发布到GitHub上,那很酷。

+0

我想为练习和练习做这件事,同样我想我可以简单地添加一些自定义功能,如果我控制所有的数据格式,比在盒子解决方案中使用。 – evg 2012-03-04 17:36:10