实战小项目之视频监控(1-2)
创始人
2024-05-30 20:33:00
0

实战小项目之视频监控(1-2)

Nginx 移植

前面也给大家提到了,我们可以使用 Nginx 来搭建 RTMP 流媒体服务器,譬如你可以在一台公网 IP 主
机上搭建流媒体服务器,当然,笔者并没有这个条件;这里我们选择在开发板上搭建流媒体服务器,并且推
流端也是开发板,所以在本章的方案中,开发板既是流媒体服务器、也是推断端。

既然要在开发板上搭建流媒体服务器,首先我们需要将 Nginx 移植到开发板上,事实上,我们的板子出
厂系统中就已经移植好了 Nginx,并且板子在启动进入系统时会自动启动 Nginx,也就是启动流媒体服务,
所以板子启动之后本身就已经是一台流媒体服务器了。当然,这里我们不管出厂系统中已经搭建好的流媒
体服务,这里只是给大家说明一下,本章我们要自己动手亲自移植 Nginx、然后在板子上搭建流媒体服务。

下载 Nginx 源码

进入到 Ubuntu 系统的某个目录下,执行下面这条命令下载 Nginx 源码:
wget http://nginx.org/download/nginx-1.20.0.tar.gz

在这里插入图片描述
这里我们下载的是 1.20 版本,这是比较新的版本了。下载完成之后将得到一个名为 nginx-1.20.0.tar.gz

的压缩包文件。
在这里插入图片描述
图 34.2.2 nginx-1.20.0.tar.gz 压缩包文件

这就是 Nginx 的源码包。

下载 nginx-rtmp-module 模块

事实上,原生的 Nginx 并不支持 RTMP,我们需要安装第三方模块 nginx-rtmp-module 插件使其支持

RTMP。通过下面这条命令下载 nginx-rtmp-module。
git clone https://github.com/arut/nginx-rtmp-module.git
在这里插入图片描述
下载成功之后将得到 nginx-rtmp-module 文件夹。

交叉编译 Nginx

将下载得到的 nginx-1.20.0.tar.gz 文件进行解压:
tar -xzf nginx-1.20.0.tar.gz
解压之后生成 nginx-1.20 文件夹,进入到该目录下。在进行交叉编译之前,先对交叉编译工具进行初始
化操作:
source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi

大家根据自己的实际安装位置填写路径。

首先配置源码、接下执行 make 编译源码,最后执行 make install 安装即可!总共的步骤就这三个,但
事实上在编译的过程中会出现一些问题,我们稍后再看!

配置源码

首先第一步是配置源码,在配置之前,需要进行一个简单的修改,否则配置通不过;首先打开 nginx 源
码目录下的 auto/cc/name 文件,将 21 行处的”exit 1”给注释掉!如下所示:
在这里插入图片描述
图 34.2.5 修改 name 文件

修改完成之后保存退出。接着打开 auto/types/sizeof 文件,将 15 行处的” ngx_size=”修改为” ngx_size=4”,
并且将 36 行处的”$CC”修改为”gcc”,如下所示:
在这里插入图片描述
图 34.2.6 修改 sizeof 文件

同样,修改完成之后保存退出即可!接着执行下面这条命令进行配置:
./configure --prefix=/home/dt/tools/nginx-1.20.0/install \
–with-http_ssl_module \
–with-http_mp4_module \
–with-http_v2_module \
–without-http_upstream_zone_module \
–add-module=/home/dt/tools/nginx-rtmp-module

上述命令中,–prefix 指定了 nginx 的安装路径,笔者为了方便直接将其安装到 nginx 源码目录下的 install

目录中;–add-module 用于添加第三方模块,譬如我们前面下载的 nginx-rtmp-module,所以–add-module 需
要指向 nginx-rtmp-module 源码路径,大家根据自己的实际路径填写。

如下所示:
在这里插入图片描述
图 34.2.7 nginx 配置

配置成功打印信息如下所示:
在这里插入图片描述
图 34.2.8 配置完成

编译源码

配置完成之后,接着我们执行 make 编译
在这里插入图片描述
图 34.2.9 执行 make 编译

本次编译并不会成功,将会出现如下错误打印信息
在这里插入图片描述
图 34.2.10 编译报错

这个时候我们需要修改 nginx 源码目录下的 objs/ngx_auto_config.h 文件,将如下内容添加到该头文件
中:
#ifndef NGX_HAVE_SYSVSHM
#define NGX_HAVE_SYSVSHM 1
#endif

在这里插入图片描述
图 34.2.11 添加内容

添加完成之后保存退出,再次执行 make 编译,这样就会编译成功了。
在这里插入图片描述
图 34.2.12 编译成功

安装

编译成功之后,接着我们进行安装,执行 make install
在这里插入图片描述
图 34.2.13 安装

笔者将 nginx 安装到了 nginx-1.20.0 目录下的 install 目录中,进入到 install 目录下:
在这里插入图片描述
图 34.2.14 安装目录下的文件夹
conf 目录下有很多的配置文件,如下所示:在这里插入图片描述
图 34.2.15 conf 目录下的配置文件

其中 nginx.conf 配置文件很重要,后续我们会对该配置文件进行相应的配置。
sbin 目录下有一个可执行程序 nginx:在这里插入图片描述
图 34.2.16 nginx 可执行程序

这个可执行文件是一个“not stripped”文件,说明该文件包含了很多的调试信息,所以导致该文件特别
大 7.5MB,可以执行下面这条命令去掉调试信息、减少文件的大小:
arm-poky-linux-gnueabi-strip --strip-debug nginx 在这里插入图片描述
图 34.2.17 去除调试信息
nginx 可执行程序用于启动流媒体服务。

现在我们需要将安装目录下的这些文件拷贝到开发板 Linux 系统上,再进行拷贝之前,需要先将开发板
出厂系统中已经移植好的 nginx 给移除,进入到开发板 Linux 系统中,执行下面这些命令移除出厂系统自带
的 nginx 程序和相应的配置文件:
rm -rf /usr/sbin/nginx
rm -rf /etc/nginx/*
在这里插入图片描述
图 34.2.18 删除出厂系统原有的 nginx

接下我们将 nginx 安装目录下 sbin 中的 nginx 拷贝到开发板 Linux 系统/home/root 目录下,如下所示:

图 34.2.19 将 nginx 拷贝到开发板

接着再将安装目录下的 conf、logs、html 文件夹拷贝到开发板 Linux 系统的/etc/nginx 目录下,如下所
在这里插入图片描述
图 34.2.19 将 nginx 拷贝到开发板

接着再将安装目录下的 conf、logs、html 文件夹拷贝到开发板 Linux 系统的/etc/nginx 目录下,如下所
示:在这里插入图片描述
图 34.2.20 将 conf、logs、html 文件夹拷贝到开发板

相关内容

热门资讯

常用商务英语口语   商务英语是以适应职场生活的语言要求为目的,内容涉及到商务活动的方方面面。下面是小编收集的常用商务...
六年级上册英语第一单元练习题   一、根据要求写单词。  1.dry(反义词)__________________  2.writ...
复活节英文怎么说 复活节英文怎么说?复活节的英语翻译是什么?复活节:Easter;"Easter,anniversar...
2008年北京奥运会主题曲 2008年北京奥运会(第29届夏季奥林匹克运动会),2008年8月8日到2008年8月24日在中华人...
英语道歉信 英语道歉信15篇  在日常生活中,道歉信的使用频率越来越高,通过道歉信,我们可以更好地解释事情发生的...
六年级英语专题训练(连词成句... 六年级英语专题训练(连词成句30题)  1. have,playhouse,many,I,toy,i...
上班迟到情况说明英语   每个人都或多或少的迟到过那么几次,因为各种原因,可能生病,可能因为交通堵车,可能是因为天气冷,有...
小学英语教学论文 小学英语教学论文范文  引导语:英语教育一直都是每个家长所器重的,那么有关小学英语教学论文要怎么写呢...
英语口语学习必看的方法技巧 英语口语学习必看的方法技巧如何才能说流利的英语? 说外语时,我们主要应做到四件事:理解、回答、提问、...
四级英语作文选:Birth ... 四级英语作文范文选:Birth controlSince the Chinese Governmen...
金融专业英语面试自我介绍 金融专业英语面试自我介绍3篇  金融专业的学生面试时,面试官要求用英语做自我介绍该怎么说。下面是小编...
我的李老师走了四年级英语日记... 我的李老师走了四年级英语日记带翻译  我上了五个学期的小学却换了六任老师,李老师是带我们班最长的语文...
小学三年级英语日记带翻译捡玉... 小学三年级英语日记带翻译捡玉米  今天,我和妈妈去外婆家,外婆家有刚剥的`玉米棒上带有玉米籽,好大的...
七年级英语优秀教学设计 七年级英语优秀教学设计  作为一位兢兢业业的人民教师,常常要写一份优秀的教学设计,教学设计是把教学原...
我的英语老师作文 我的英语老师作文(通用21篇)  在日常生活或是工作学习中,大家都有写作文的经历,对作文很是熟悉吧,...
英语老师教学经验总结 英语老师教学经验总结(通用19篇)  总结是指社会团体、企业单位和个人对某一阶段的学习、工作或其完成...
初一英语暑假作业答案 初一英语暑假作业答案  英语练习一(基础训练)第一题1.D2.H3.E4.F5.I6.A7.J8.C...
大学生的英语演讲稿 大学生的英语演讲稿范文(精选10篇)  使用正确的写作思路书写演讲稿会更加事半功倍。在现实社会中,越...
VOA美国之音英语学习网址 VOA美国之音英语学习推荐网址 美国之音网站已经成为语言学习最重要的资源站点,在互联网上还有若干网站...
商务英语期末试卷 Part I Term Translation (20%)Section A: Translate ...