QT里获取摄像头的单张数据:

   cam = new QCamera;capture = new QCameraImageCapture(cam);connect(capture, SIGNAL(imageCaptured(int,QImage)), this, SLOT(image_ready(int,QImage))); //当捕捉一张图像数据后,触发槽函数,并传递图像数据作为参数cam->setCaptureMode(QCamera::CaptureStillImage); //设置摄像头的工作模式为捕捉一张张的图像cam->start();capture->capture(); //捕捉开始,捕捉完成后,会发出信号imageCaptured(...)
//这种方式,每次获取图像时,都会在硬盘上保存起来,效率低.//capture->setCaptureDestination(QCameraImageCapture::CaptureToBuffer); //设置捕捉的图像存放在内存数组里,还是会保存到硬盘上。估计是bug.

/

用摄像头预览模式:

    cam = new QCamera;view = new QCameraViewfinder(this);view->setGeometry(0, 0, 640, 480);view->show();cam->setViewfinder(view);cam->start();//这种方式,图像会直接在view上刷出,不会保存到硬盘上。刷新速度快。但没法直接拿到图像数据.

在摄像头的预览模式下,可以通过截屏的方式来获取图像的数据:

    QScreen *screen = QApplication::primaryScreen();QPixmap map = screen->grabWindow(view->winId()); //只截view窗口对象上的图像,也就是摄像头的数据//再编码成jpg图像QByteArray ba;QBuffer    bf(&ba);map.save(&bf, "jpg", 50);//完成后,图像数据在ba.data()里, 图像大小为ba.size();

//
网络传输的实现:

传输协议:
图像数据按1380字节分成多个部分,每次传输一部分数据.
客户端连接后,发出请求”new_request”, 服务器端发回”newImage:图像大小”
客户端发回”ack”, 服务器端发出第一部分数据,等接收到客户端的”ack”后,再发出下一部分数据…

服务器端:
1. 创建并初始化QTcpServer对象

2.  实现QCamera对象的预览模式3.  用QList<QTcpSocket*>容器把每个客户端连接上来产生的QTcpSocket对象的地址。每个客户端的网速不一样, 所以在服务端每个QTcpSocket对象都需要存放自己的图像数据,已发出的数据长度,工作状态等 .
    class Data {public:char data[LEN]; //图像数据int  len; //图像大小int  len_sent; //已发出的数据长度int  stats; //工作状态, 0表示空闲(图像数据可以更新), 1表示图像数据传输中(还不可以更新图像数据), 2表示需要发出"newImage:图像大小"Data() {len_sent = 0;stats = 0;}};//  通过QObject里的setUserData(...)来设置每个QTcpSocket对象的Data对象//  通过QObject里的userData(..)来获取每个QTcpSocket对象的Data对象
4.  定时通过截屏的方式来获取摄像头数据, 并根据每个QTcpSocket对象的工作状态来更新图像数据.如是状态2,还需要发出"newImage:图像大小".

客户端:
1. 创建QTcpSocket对象并连接服务器端

2.   连接上后,向服务器端发出"new_request"请求图像数据. 记录服务器端发回的图像大小. 再回"ack", 然后接收并存放好每部分的图像数据,直到接收完成后,把图像刷出来.

//
完整服务器端,客户端的工程下载:
http://download.csdn.net/download/jklinux/9897890

QT 支持多客户端网络视频监控的实现相关推荐

  1. 【智慧养殖解决方案】如何使用EasyGBS构建鱼塘养殖高清网络视频监控系统?

    一.方案背景 随着我国农业的快速发展,以及对新兴技术的应用,养殖业.农牧业.种植业等也面临着全新的挑战与机遇.如何与新兴技术结合,建立智能化的远程监控平台,实现高效管理.提高经济效益和市场竞争力? 以 ...

  2. 基于Linux的嵌入式网络视频监控系统研究与设计

    http://www.nesr.lingd.net/article-4364839-1.html 摘 要:网络视频监控已经在嵌入式领域得到了发展,但目前视频监控硬件设施比较昂贵,不能普遍使用.本文提出 ...

  3. 大型企业网络视频监控系统解决方案

    企业级视频监控系统采用数字化.网络化和智能化相融合的新一代视频监控技术,支持领先的视音频编解码算法,具有强大的网络处理及智能整合功能,可提供集图像监控和报警联动于一体的行业网络视频监控解决方案.基于开 ...

  4. 【解决方案】国标GB28181平台EasyGBS级联EasyCVR视频智能分析搭建“蓝天卫士”网络视频监控系统技术方案

    一.背景分析 当前,现代工农业的迅速发展在为社会创造了丰富的物质财富的同时,也对自然环境和人类健康造成了日益严重的危害,并导致了资源短缺.环境污染.生态破坏.随着中国经济环境的改善和能源环境结构调整, ...

  5. 【解决方案】国标GB28181协议视频平台EasyGBS搭建培训机构网络视频监控系统解决方案

    近来校园安全事件及校车事故频发,引起全社会对学生上学途中及在校期间安全状况的强烈关注,送孩子去培训机构上辅导班,兴趣课亦是如此.怎样才能为家长解除后顾之忧呢?而作为培训机构管理者,必须每时每刻对园中各 ...

  6. 基于MPEG-4和RTP的网络视频监控系统研究

    基于MPEG-4和RTP的网络视频监控系统研究 文/北京邮电大学通信网络综合技术研究所  龚猷龙 刘勇 摘  要:随着计算机.网络及多媒体通信技术的发展,视频监控在业界得到了广泛的应用,许多先进的技术 ...

  7. 高速公路网络视频监控方案

    随着国内高速公路的大规模建设以及高速公路网的完善,对高速公路收费及路段的监控.管理已经成为高速公路管理的一项重要内容.本方案旨在利用现有的数据传输线路,建设基于IP网络传输的集中视频监控解决方案,以科 ...

  8. 无线网络视频监控系统基本概念和术语

    无线网络视频监控系统基本概念和术语 1.网络摄像机与模拟摄像机的区别 模拟摄像机,或称摄像头,输出CVBS模拟视频信号,PAL制或者NTSC制.模拟摄像机多采用CCD器件,目前也有采用CMOS器件的. ...

  9. 基于嵌入式技术的网络视频监控系统

    随着计算机技术及网络技术的迅猛发展,世界掀起一股强大的数字化.网络化浪潮,对于公安.安防行业的发展,必须经历模拟数字混合的阶段,但是最终的趋势必然是全面数字化,即视频在前端进行数字化.网络化,采用嵌入 ...

最新文章

  1. 碰疼了会躲!这个植入“迷你大脑”的AI机器人,可感知疼痛,还能自我愈合...
  2. SDRAM 相关资料
  3. 【转】java提高篇(十)-----详解匿名内部类
  4. 解决微信小程序配置https不成功问题
  5. linux系统怎么清理磁盘空间,LINUX系统怎么使用命令清理磁盘空间?
  6. 【赠送】IT技术视频教程,白拿不谢!思科、华为、红帽、数据库、云计算等等
  7. DE标识DellUtility磁盘手动创建
  8. 自定义对话框 提示:Unable to add window token null is not for an application
  9. 记录jquery的ajax
  10. shell 调试脚本设置
  11. Atitit  OOCSS vs bem
  12. php游戏充值平台源码,PHP平台源码下载-PHP第四方支付平台源码pc端下载
  13. 矩阵迹(trace)与行列式(determinate)的一些性质
  14. hspace在表格中无效吗html,HTML代码汇总详解
  15. transform translateY(-50%) 实现元素垂直居中效果
  16. iOS牛顿摆 小球撞击 物理学仿真模拟
  17. python函数之plot函数(一)
  18. pandas学习之concat合并及读写CSV文件
  19. 如何制作笔记本操作系统恢复盘
  20. 关于社区团购和菜场买菜的一点感想

热门文章

  1. 什么是激活函数以及其作用
  2. CVPR 2018 论文解读(部分)
  3. 顺序表的基本操作——初始化表
  4. JPEG图像压缩和解压缩操作
  5. AHB协议(2/2)
  6. kms工具(2021.7.24更新)
  7. Unity3D开发游戏有没有流行的框架
  8. CSS 3之菜单的横竖转换
  9. 关于OFDM中的FFT和IFFT
  10. 浮点数的加减运算(阶码、尾数)