# 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 命令行程序,如下图所示:

客户端是一个 QT 开发的图形用户界面,在连接服务端时,需要填入服务端的 IP 地址和网络端口,并选择与服务端一致的传输协议,如下图所示:
注:使用时,服务端与客户端应在同一局域网中。
## 功能介绍
#### 指定视频采集设备或自动搜索可用设备
服务端可使用`-d`选项来指定所使用的视频采集设备:

若不使用`-d`选项,那么服务端将会自动搜索可用设备:

#### 查看设备支持的像素格式、分辨率和帧率
服务端可使用`-v`选项来查看设备支持的像素格式、分辨率和帧率:

#### 指定分辨率和帧率
服务端可使用`-s`和`-r`选项来指定图像的分辨率和帧率:

#### 指定网络端口:
服务端可使用`-p`选项来指定网络传输端口:

相应地,客户端在连接时选择的端口要与服务端一致:
#### 选择传输协议
服务端传输层协议默认为 UDP ,可以使用`-t`选项切换为 TCP :

相应地,客户端在连接时选择的传输协议要与服务端一致:
#### 显示帮助信息
服务端可使用`-h`选项来显示帮助信息:

## 目录结构
```
├─── 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 ):

3. 在源码目录下,使用`make`命令编译源码:
```
make
```
#### 编译客户端源码
编译客户端源码的环境要求:任意系统下的 QT Creator 软件。
1. 使用 QT Creator 软件打开 Video_Client.pro 文件,选择一个 kit (例如 MinGW 64-bit ),然后点击“ Configure Project ”按钮:
2. 点击左下角的“运行”按钮,即可编译源码:
