# Video_Surveillance **Repository Path**: Aurora-FV/Video_Surveillance ## Basic Information - **Project Name**: Video_Surveillance - **Description**: 基于 Linux + QT 的网络视频监控系统 - **Primary Language**: C - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2023-07-06 - **Last Updated**: 2023-07-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 项目简介 本项目是一个基于 Linux + QT 的网络视频监控系统。 Linux 端为服务端,使用 v4l2 采集 MJPG 图像,并使用 UDP/TCP 来发送 MJPG 图像; QT 开发的图形用户界面为客户端,使用 UDP/TCP 来接收 MJPG 图像,并将图像显示在 label 控件中。 服务端是一个名为`Video_Server`的 Linux 命令行程序,如下图所示: ![](README.assets/2023-04-15-16-49-08-image.png) 客户端是一个 QT 开发的图形用户界面,在连接服务端时,需要填入服务端的 IP 地址和网络端口,并选择与服务端一致的传输协议,如下图所示: 注:使用时,服务端与客户端应在同一局域网中。 ## 功能介绍 #### 指定视频采集设备或自动搜索可用设备 服务端可使用`-d`选项来指定所使用的视频采集设备: ![](README.assets/2023-04-14-17-47-48-image.png) 若不使用`-d`选项,那么服务端将会自动搜索可用设备: ![](README.assets/2023-04-14-17-43-30-image.png) #### 查看设备支持的像素格式、分辨率和帧率 服务端可使用`-v`选项来查看设备支持的像素格式、分辨率和帧率: ![](README.assets/2023-04-15-17-14-55-image.png) #### 指定分辨率和帧率 服务端可使用`-s`和`-r`选项来指定图像的分辨率和帧率: ![](README.assets/2023-04-14-17-51-38-image.png) #### 指定网络端口: 服务端可使用`-p`选项来指定网络传输端口: ![](README.assets/2023-04-14-17-53-05-image.png) 相应地,客户端在连接时选择的端口要与服务端一致: #### 选择传输协议 服务端传输层协议默认为 UDP ,可以使用`-t`选项切换为 TCP : ![](README.assets/2023-04-14-17-53-56-image.png) 相应地,客户端在连接时选择的传输协议要与服务端一致: #### 显示帮助信息 服务端可使用`-h`选项来显示帮助信息: ![](README.assets/2023-04-14-17-46-30-image.png) ## 目录结构 ``` ├─── README.assets ├─── Video_Client    # 客户端源码 │ ├─── main.cpp │ ├─── mainwindow.cpp │ ├─── mainwindow.h │ └─── Video_Client.pro ├─── Video_Server    # 服务端源码 │ ├─── camera.c │ ├─── camera.h │ ├─── global.h │ ├─── main.c │ ├─── main.h │ ├─── Makefile │ ├─── tcp.c │ ├─── tcp.h │ ├─── udp.c │ └─── udp.h └─── README.md ``` ## 编译源码 #### 编译服务端源码 编译服务端源码的环境要求:运行在 x86 架构处理器上的 Linux 发行版(例如 Ubuntu )。 ###### 编译成在 x86 架构处理器上运行的程序: 1. 编译源码前,需要先安装 gcc 编译器: ``` sudo apt-get install gcc ``` 2. 在源码目录下,使用`make`命令编译源码: ``` make ``` ###### 编译成在 ARM 架构处理器上运行的程序: 1. 编译源码前,需要先安装 arm-linux 交叉编译器(例如 arm-linux-gnueabihf-gcc ): ``` sudo apt-get install gcc-arm-linux-gnueabihf ``` 2. 将 Makefile 文件中第一行指定的编译器更改为所安装的交叉编译器(例如 arm-linux-gnueabihf-gcc ): ![](README.assets/2023-04-16-21-44-54-image.png) 3. 在源码目录下,使用`make`命令编译源码: ``` make ``` #### 编译客户端源码 编译客户端源码的环境要求:任意系统下的 QT Creator 软件。 1. 使用 QT Creator 软件打开 Video_Client.pro 文件,选择一个 kit (例如 MinGW 64-bit ),然后点击“ Configure Project ”按钮: 2. 点击左下角的“运行”按钮,即可编译源码: ![](README.assets/2023-04-16-22-04-00-image.png)