打印本文 打印本文 关闭窗口 关闭窗口
在网络上进行摄像头视频通讯
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2049  更新时间:2009/4/23 18:28:20  文章录入:mintao  责任编辑:mintao
p; zeromemory(OutBuffer,OutBufferSize);
    ICDecompressBegin(CapVar.hic,@BmpInInfo.bmiHeader, @BmpOutInfo^.bmiHeader);


    最后,当然是视频数据的解压过程

    if VIDEO_DATA.bKeyFrame then
       Result:=ICDecompress(CapVar.hic,0,@BmpInInfo,@VIDEO_DATA.Buf,
                   @BmpOutInfo.bmiHeader,OutBuffer)
    else
       Result:=ICDecompress(CapVar.hic,ICDECOMPRESS_NOTKEYFRAME,@BmpInInfo,@VIDEO_DATA.Buf,
                   @BmpOutInfo.bmiHeader,OutBuffer);
    if (Result=ICERR_OK) then
    begin
       SetDIBitsToDevice(Canvas.Handle,0,0,bmptmp.Width,bmptmp.Height,0,0,0,BmpOutInfo^.bmiHeader.biHeight ,
                  OutBuffer,BmpOutInfo^,DIB_RGB_COLORS);
    end;

    这样,传送过来的视频数据变直接画到了Canvas.Handle上了。
    还忘记了服务端关闭摄像头的方法,调用capDriverDisconnect(CapWnd) 就OK了。

    全文就Over了,jasonke还要说的就是,这个方法是用的微软的老函数,不过实现起来很简单,相信会点API的都能开发出来,还有一种方法当然是用DirectShow了哟,这需要你开发Filter,要搞明白微软的几个接口,你可以看看DShowNetwork例子。这个方法也有很多C++的兄弟在痛苦的实现,想一想DirectShow的功能真是强大哟,哈哈。

欢迎大家光临《黑雨共享软件》,谢谢大家对中国共享软件的支持

http://brsoft.0033.cn 
http://brsoft.008.net

 

上一页  [1] [2] 

打印本文 打印本文 关闭窗口 关闭窗口