APP下载

视频监控系统的设计

2023-09-19李文龙袁三男

电子设计工程 2023年18期
关键词:流器开发板服务器端

李文龙,袁三男

(上海电力大学电子与信息工程学院,上海 201306)

网络视频监控设备将嵌入式设备与相应的网络视频技术结合,可以提供视频服务,而且还大大降低了设备的价格[1]。嵌入式操作系统在软件方面没有做明显的区分,如系统软件和应用软件。并且在功能设计方面及功能实现上没有要求过于复杂,这样做不仅有利于控制系统成本,同时也实现了系统安全[2]。

Linux 系统的主要优点之一为其是一个开放源代码的操作系统,与Windows 等其他操作系统相比,Linux 更安全。相对于其他操作系统,其主要的优点是可以自定义[3]任何功能,根据需要,添加或删除任何功能,因为它是开源操作系统[4]。Linux 提供了很高的稳定性,这也是一个很好的优势,即它不需要在短时间内重启。

1 相关基础技术理论

1.1 视频编码标准

H.264 是ITU-T 的VCEG(视频编码专家组)和ISO/IEC 的MPEG(活动图像编码专家组)的联合视频组(Joint Video Team,JVT)开发的一个数字视频编码标准[5]。H.264 是ITU-T 以H.26x 系列为名称命名的标准之一,AVC 是ISO/IEC MPEG 一方的称呼[6]。

1.2 网络传输协议

RTMP(Real Time Messaging Protocol)从属于应用层,基于TCP 的数据传输协议。被用来在TCP 传输协议上复用和打包多媒体传输流。RTMP 提供了一套全双工的可靠的多路复用消息服务,用来在一对结点之间并行传输带时间戳的音频流、视频流、数据流[7-8]。通过RTMP 协议进行播放需要以下步骤:握手、建立连接、建立流、播放。流程图如图1 所示。

图1 RTMP协议播放流程

2 系统的总体设计

2.1 系统架构

系统主要是由服务器端和客户端组成,服务器端主要完成视频数据采集,将采集到的原始数据进行压缩编码,利用推流器将数据推送到流媒体服务器上。客户端则采用拉流器从流媒体服务器上进行拉流播放。在该设计中,采用RTMP 协议进行数据传输,从而保证视频数据流能够实时传输。服务器端利用ARM 开发板进行推流,客户端利用PC 机进行拉流,系统框架图如图2 所示。

图2 系统框架图

2.2 硬件开发平台

开发板是基于四核ARM Cortex-A7,算力NPU达到2T,并且还支持H.264/H.265 视频编解码技术,总容量16 GByte 的8 bitEMMC Flash,USB2.0 外接设备,千兆以太网RTL8211F,MIPI Camera,硬件结构图如图3 所示。

图3 硬件结构图

3 开发环境搭建

3.1 安装交叉编译工具

交叉编译工具是在一个平台上编译生成可在其他平台上执行的代码。同一个体系结构可以运行不同的操作系统[9];同一个操作系统也可以在不同的体系结构上运行。文中上位机的操作系统为ubuntu16.04,该系统安装交叉编译工具,用于文件系统和上层应用以及U-Boot 和Linux 内核的编译。

3.2 内核移植

内核移植是设计系统的核心部分,在设计时采用的是嵌入式系统,嵌入式操作系统有较好的裁剪性,可以根据自己的需求对系统进行裁剪,得到最精简的系统后将系统写入存储芯片中[10]。

嵌入式开发,可以根据具体的应用需求,用不同的配置进行开发,一般的开发过程中都包括如下过程:

1)编译开机引导装载程序BootLoader;

2)编译内核kernel;

3)利用Busybox 或者Buildroot 制作根文件系统;

4)建立应用程序分区;

5)程序的开发;

6)烧录开机引导装载程序,内核kernel,根文件系统rootfs,app。

3.3 设置网络文件系统NFS

网络文件系统(NFS)通过挂载的方式,将远程客户端的文件挂载到本机上,如同本地文件,也允许远程客户端以类似的方式,来通过网络进行访问[11]。为了方便后面文件传输,利用NFS 建立PC 与开发板之间的联系,当开发板上电并与电脑通过网线连接后,将设置的共享文件夹挂载到开发板上,在后面的开发中,PC 机与开发板之间便可通过该共享文件夹进行文件传输[12]。

3.4 Nginx流媒体服务器移植

开源项目Ngnix 原本是不支持RTMP 协议的,所以需要移植第三方模块nginx-rtmp-module 来实现RTMP 协议[13]。通过使用Buildroot 工具对Nginx 编译,在配置编译前需要先下载第三方模块,最后编译生成.img 文件,并将该文件烧录到开发板。

4 软件设计

4.1 设计框架

服务器端完成如下功能:驱动摄像头采集视频,压缩编码原始数据,对编码后的视频数据进行封装,将封装后的数据推送到流媒体服务器上,等待客户端拉流请求[14]。客户端主要实现从流媒体服务器上进行拉流播放功能。系统流程框图如图4 所示。

图4 系统流程框图

4.2 服务器端

服务器端主要工作是编写一个简单的视频推流器,将摄像头采集的视频数据经过压缩编码一系列处理之后,推送到流媒体服务器[15]。摄像头采集数据利用V4L2 技术,V4L2 是专门为Linux 设备设计的一套视频框架,视频设备被当作一个文件[16]。打开设备,用非阻塞模式打开摄像头设备作为推流器的输入,将得到的视频数据采用H.264 标准进行视频编码,将编码后的数据封装为FLV 格式进行传输[17]。流媒体服务器的地址作为输出。程序流程图如图5所示。

图5 推流器的程序流程图

4.3 客户端

客户端主要编写从流媒体服务器拉取的视频数据,并进行解码实时视频播放的拉流器应用程序[18]。程序主要是根据流媒体服务器的地址,将视频数据流拉取下来,拉取下来的视频数据被封装成flv 格式,所以不能直接用来播放,需要进一步解封装,再将解封装后的数据通过解码得到原始的视频流数据,对得到的原始数据进行播放,从而能够达到实时播放的效果[19]。程序设计流程图如图6 所示。

图6 拉流器程序流程图

5 实验测试

测试首先进入开发板,开启流媒体服务器并运行推流程序,当服务器程序启动后,在PC 端打开拉流应用程序,并在应用程序框中输入流媒体服务器地址,如rtmp://192.168.0.114:1935/live/test,获取视频服务,连接成功之后,PC 端显示器上会显现出所要监控的画面,基本达到实时效果并且画面基本清晰。

6 结束语

视频监控在市场中具有较为广泛的应用场景,在日常生活中,视频监控可以用于安保与预警,保障了人们日常生活安全;在日常出行中,视频监控可以应用于行车记录仪以及汽车的全景环视。并且随着行业的拓展,搭配着其他技术可以应用于特殊的领域,如车牌识别、人脸识别等应用[20]。该文研究了相关的基于嵌入式视频监控的系统架构,并简单介绍视频编解码的流程,通过编写视频推流器和拉流器来实现视频流数据的实时转发和接收,为后续的视频监控开发奠定了基础。

猜你喜欢

流器开发板服务器端
跨座式单轨车辆受流器设计
浅析城轨车辆受流器滑板脱落及改进措施
浅析异步通信层的架构在ASP.NET 程序中的应用
Microchip最新推出两款PIC32 Curiosity开发板
浅析单片机开发板的设计与制作
在Windows中安装OpenVPN
阿根廷布市萨缅托线的受流装置设计
Mouser为您呈上开发关键之STMicroelectronics Nucleo开发板
Arduino和Atmel发布Arduino Zero开发板
一种城轨车辆用第三轨受流器的设计