网络监控摄像头芯片破解
1 必备基础知识
芯片破解本篇需要编写一个服务器和客户端,关于TCP服务器/客户端的基础知识,可参考这篇:socket套接字基础
注意,Qt中对Socket的操作进行了进一步的封装,其基本思想还是一样的。
下面就来看一下Qt中如何实现TCP Socket通信。
1.1 QTcpSocket与QTcpServer
QTcpSocket,在Qt中,Socket被封装成了QTcpSocket,可以用它实现TCP客户端的功能,以及服务端接收到客户端后,对客户端的处理。
QTcpServer,对于TCP服务端的功能,可以使用QTcpServer来完成。
这里整理Qt中TCP Socket的使用方法,配合Qt的信号与槽机制,即可实现服务端/客户端数据的收发处理。
1.2 QCamera相关
QCamer,获取当前系统可用的摄像头 类似获取串口
QCamerInfo,获取当前系统可用的摄像头 类似获取串口
QCameraViewfinder,取景框类,摄像头的实时画面显示到这个里面
QCameraImageCapture,图像录制类,与QCamer 配合使用可进行拍照
2 Win平台上测试
首先在Windows平台上用Qt Creator编写服务端和客户端程序,并运行测试。
2.1 服务器端
先来看下服务器端的最终效果:
- 左侧是摄像头的显示界面
- 可以切换不同的摄像头作为视频源(笔记本自带的摄像头与USB外接的摄像头)
- 可以切换摄像头的显示分辨率
- 可以选择开启或关闭摄像头的IP服务
2.1.1 摄像头画面显示
<span https:="" mmbiz.qpic.cn="" mmbiz_svg="" 7n2jrawoorczuhagnmgkgpvmsbov55khsib7ericncb3qlr0nsoxqxq6koibzbar6jct5v9gt0pwogu732rbdpic1sefkzcqh4w1="" 640?wx_fmt="svg")" 10px="" 40px="" no-repeat="" rgb(30,="" 30,="" 30);height:="" 30px;width:="" 100%;margin-bottom:="" -7px;border-radius:="" 5px;"="" style="display: block; background: url("");">Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); QComboBox *pCamType = new QComboBox(); m_pComboBox = ui->cbBox_resolution; pCamType = ui->cbBox_cameras; pCamType->clear(); cameraList = QCameraInfo::availableCameras(); foreach(const QCameraInfo &cameraInfo, cameraList) { qDebug() << "CameraInfo:" << cameraInfo; pCamType->addItem(cameraInfo.description()); } m_pCamViewFind = new QCameraViewfinder(this); m_pCamViewFind->setGeometry(10, 10, W, H); m_pCamViewFind->show(); m_pCam = new QCamera(this); m_pCam->setViewfinder(m_pCamViewFind); m_pCam->start();