对于我的项目,我想通过套接字将C#中捕获的实时网络摄像头视频添加到 as3 flash应用程序中。
我有 c#位图图片,我通过套接字发送。
现在我想在as3 flash应用程序中显示这个位图图像。
答案 0 :(得分:0)
最后我能弄清楚。
此代码从c#捕获实时网络摄像头源并将其发送到AS3(Flash)应用程序。
我从c#发送图片:
using (MemoryStream ms = new MemoryStream())
{
Bitmap t = image.Clone(r, PixelFormat.Format32bppArgb);
t.Save(ms, ImageFormat.Jpeg);
byte[] imageBuffer = ms.ToArray();
byte[] filesize = BitConverter.GetBytes(imageBuffer.Length);
byte[] msg = new byte[filesize.Length + imageBuffer.Length];
filesize.CopyTo(msg, 0);
imageBuffer.CopyTo(msg, 4);
netstream.Write(msg, 0, msg.Length);
t.Dispose();
}
在AS3方面,我接收它为:
socket.endian = Endian.LITTLE_ENDIAN;
b.endian = Endian.LITTLE_ENDIAN;// Changing it to little endian worked.
socket = new Socket();
socket.addEventListener(ProgressEvent.SOCKET_DATA, onResponse);
socket.connect("127.0.0.1", 12345);
private function onResponse(e:ProgressEvent):void
{
......
socket.readBytes(b,0,4);
b.position = 0;
filesize = b.readInt();
b.clear();
socket.readBytes(b,0,socket.bytesAvailable);
b.position = 0;
l = new Loader();
l.loadBytes(b);
l.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
}
private function loaded(e:Event):void
{
var bitmap:Bitmap = e.target.content;
while(this.numChildren > 0)
{
this.removeChildAt(0);
}
addChild(bitmap);
// remove listener
e.target.removeEventListener(Event.COMPLETE, loaded);
}