基于RK3576开发板的多路网络摄像头取流方案

电子说

1.4w人已加入

描述

1. 方案简介

      方案示意图

摄像头

2. 快速上手

       如果您初次阅读此文档,请阅读:《入门指南/源码管理及编程介绍/源码工程管理》,按需管理自己工程源码(注:此文档必看,并建议采用【远程挂载管理】方式,否则有代码丢失风险!!!)。

2.1  源码工程下载

      先在PC虚拟机定位到nfs服务目录,再在目录中创建存放源码仓库的管理目录:

 

cd ~/nfsroot
mkdir GitHub
cd GitHub

 

       再通过git工具,在管理目录内克隆远程仓库(需要设备能对外网进行访问)

 

git clone https://github.com/EASY-EAI/EASY-EAI-Toolkit-3576.git
摄像头

 

  注:

* 此处可能会因网络原因造成卡顿,请耐心等待。

* 如果实在要在gitHub网页上下载,也要把整个仓库下载下来,不能单独下载本实例对应的目录。

2.2  开发环境搭建

       通过adb shell进入板卡开发环境,如下图所示。

摄像头

       通过以下命令,把nfs目录挂载上nfs服务器。

 

mount -t nfs -o nolock < nfs server ip >:< nfs path in server > /home/orin-nano/Desktop/nfs/
摄像头

 

2.3  例程编译

       然后定位到nfs的挂载目录,再在目录中创建存放源码仓库的管理目录:

 

cd /home/orin-nano/Desktop/nfs/GitHub

 

       进入到对应的开发实例目录执行编译操作,具体命令如下所示:

 

cd EASY-EAI-Toolkit-3576/Solutions/rtspMulitPlayer/
./build.sh
摄像头

 

2.4  例程运行及效果

       执行下方命令,运行示例程序:

 

./Release/rtspMulitPlayer

 

       执行效果如下所示。

摄像头

3. 设计说明

       本开发实例由四大逻辑模块组成,分别是:启动逻辑、取流解码逻辑、算法分析逻辑、显示逻辑。

3.1  逻辑框图

摄像头

3.2  数据流图

摄像头

3.3  代码组成

       本开发实例相关的所有代码,均位于EASY-EAI-Toolkit-3576/Solutions/rtspMulitPlayer/中。其中:

启动逻辑位于:EASY-EAI-Toolkit-3576/Solutions/rtspMulitPlayer/src/main.cpp

取流解码逻辑位于:EASY-EAI-Toolkit-3576/Solutions/rtspMulitPlayer/src/capturer/

算法分析逻辑位于:EASY-EAI-Toolkit-3576/Solutions/rtspMulitPlayer/src/analyzer/

显示逻辑位于:EASY-EAI-Toolkit-3576/Solutions/rtspMulitPlayer/src/display/

摄像头

3.4  调用关系

摄像头

4. 开发指南

4.1  Toolkit仓库介绍

摄像头

4.2  示例文件&目录结构

4.2.1   开发实例介绍

       每个开发实例就是一个独立的项目,项目使用cmake构建自动编译部署。一个最简单的项目至少要包含以下元素:build.sh、CMakeLists.txt、main.c,如下所示。

摄像头

       具体介绍如下所示。

组成部分 描述
build.sh 编译脚本,用于管理生成可执行文件后的部署准备工作,用户可自定义shell命令
CMakeLists.txt 工程管理文件,用于组织整个工程结构,指导cmake生成Makefile
include 用于存放第三方应用库、头文件目录等
src 用于存放实现本方案需求的源代码

4.2.2   可拓展的目录

       可拓展的目录是指:开发过程中增加某些功能模块,功能代码。增加模式分为两种:

增加已编译的第三方库,在include、libs目录内添加头文件和库文件;

增加用户自定义的功能模块,推荐在src目录内增加;

       具体情况如下所示,第三方模块相关的文件由include/3rd_model/xxx.h、libs/3rd_model/xxx.a。自定义的功能模块为src/mySrcCode、src/mySrcCode2。

摄像头

4.3  CMakeLists.txt文件解析

4.3.1   编译环境配置部分:

       第一部分为配置部分,配置部分如下所示。(获取当前方案目录、配置工具链、提取方案名称):

摄像头

       配置信息如下所示。

配置项 描述
CMake要求版本 cmake_minimum_required函数指定,要求的最低版本
CMAKE_SYSTEM_NAME cmake的系统类型,交叉编译必须
CMAKE_CROSSCOMPILING cmake是否启动交叉编译
cross.camke camke_host_system_information获取平台信息,发现不是armv7l或者aarch64就导入当前平台的交叉编译配置。
project项目名 由project函数指定

4.3.2   easyeai-api配置部分

       第二部分是引入我司的功能组件库(针对当前方案进行:配置EASY EAI API头文件目录${XXX_INCLUDE_DIRS}、源码文件目录${XXX_SOURCE_DIRS}以及所依赖的库参数${XXX_LIBS}):

摄像头

       配置信息如下所示。

配置项 描述
api_inc 最终通过target_include_directories关键字指定目标包含的头文件路径
api_srcs 最终通过add_executable关键字指定所需easyeai-api的源码
sysLib_list 最终通过target_link_libraries关键字指定easyeai-api所需的库参数

4.3.3   第三方库配置部分

       第三部分配置第三方的库(针对当前方案进行:配置第三方头文件目录、库文件目录、配置第三方库链接参数以及配置源码目录):

摄像头

       配置信息如下所示。

配置项 描述
custom_inc 自定义变量custom_inc,最终通过target_include_directories函数指定目标包含的头文件路径,在源码include目录下
link_directories 由link_directories函数指定第三方库所在路径
custom_libs 自定义变量custom_libs,最终通过target_link_libraries函数指定目标引用的库链接参数
aux_source_directory 自定义变量dir_srcs,用于添加工程代码以及自定义的个人代码

       例如添加个人库的目录组成方式如下所示。

摄像头

       aux_source_directory的修改方式为:

 

aux_source_directory(./src ./src/mySrcCode ./src/mySrcCode2 dir_srcs)

 

       或

 

aux_source_directory(./src dir_srcs)
aux_source_directory(./src/mySrcCode dir_srcs)
aux_source_directory(./src/mySrcCode2 dir_srcs)

 

4.3.4   本方案配置部分

       第四部分配置项目的编译信息,内容如下所示:

摄像头

       配置项如下所示。

配置项 需求
add_executable 编译结果为${CURRENT_FOLDER}指定,即方案目录名;
编译的源文件为${dir_srcs}和${api_srcs}指定;
target_include_directories 指定头文件的名字,由${custom_inc}与${api_inc}指定;
target_link_libraries 指定的库编译参数,由${custom_libs}与${sysLib_list}指定;

4.4  build.sh编译脚本:

4.4.1   路径定位部分

       第一部分用于提取目录用于编译操作,内容如下所示:(进入build.sh脚本所在目录,并且提取当前目录绝对路径,提取当前目录名称)

摄像头

4.4.2   清除编译部分

       第二部分清除操作,清除目录为build、Release,内容如下所示:(执行build.sh脚本时,带入了参数“clear”,则清空编译输出)

摄像头

4.4.3   编译操作

       第三部分,编译直接调用cmake,内容如下所示:(重新编译,成部署目录,并把资源自动部署进板卡)

摄像头摄像头


审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分