智能摄像机怎么安装连接(4g智能摄像机怎么用)

本文分享自华为云社区《华为云ECS服务器安装CentOS7.4镜像,部署GINX服务器,搭建物联网视频监控系统》。作者:DS小龙哥。在CentOS7.4 server版本的环境下安装nginx服务器、prof

本文最后更新时间:  2023-04-25 20:28:03

本文分享自华为云社区《华为云ECS服务器安装CentOS7.4镜像,部署GINX服务器,搭建物联网视频监控系统》。作者:DS小龙哥。

在CentOS7.4 server版本的环境下安装nginx服务器、profile服务器和流媒体服务器。

(1)配置NGINX为HTTP服务器,安装rtmp模块,完成rtmp视频流,支持将视频缓存到本地目录,支持转换为HLS流,通过浏览器访问直播流。

(2)部署自动引导程序:方便设置自己的程序进行引导。

1.环境介绍

环境:采用华为云ECS弹性云服务器——centos 7.4 64位镜像安装—–是服务器版,不是桌面版。

在CentOS7.4 server版本的环境下安装nginx服务器、profile服务器和流媒体服务器。

(1)配置NGINX为HTTP服务器,安装rtmp模块,完成rtmp视频流,支持将视频缓存到本地目录,支持转换为HLS流,通过浏览器访问直播流。

(2)部署自动引导程序:方便设置自己的程序进行引导。

2.在CentOS中安装带有rtmp模块的Nginx2.1。新安装的系统可以先安装一些工具。

yum-y PC repr-devel OpenSSL OpenSSL-devel zlib zlib-devel gcc gcc-c++ yum install-y vim wget lsof git zip unzip 2.2获取Nginx二进制源代码

听说srtmp模块暂时只支持NGINX版本。目前Nginx13-15在官网下载。

从wget http://nginx.org/download/nginx-1.14.2.tar.gztar xvf nginx-1.14.2.tar.gz 2.3获得nginx-rtmp模块

WGET https://github . com/arut/nginx-rtmp-module/archive/refs/tags/v 1 . 2 . 1 . tar . gztarxvf v 1 . 2 . 1 . tar . gz 2.4编译nginx

cd nginx-1.14.2。/configure - add-module=../nginx-rtmp-module-1 . 2 . 1/-with-http _ SSL _ module make && ampMake #建立软链接ln-s/usr/local/nginx/sbin/nginx/usr/bin特别说明:

如果在配置过程中报告了一个错误,那么通常会丢失一些东西,然后安装并重新配置它。

比如:报错。/configure:错误:http重写模块需要pcre库。您可以禁用维护对象...解决方案:yum-y安装pcre-devel yum-y安装OpenSSL OpenSSL-devel 2.5修改Nginx的配置文件。

打开文件/usr/local/nginx/conf/nginx . conf,并在文件末尾添加以下配置。

rtmp { server { listen 8888应用程序直播{直播;}}}以上8888是rtmp推拉的端口。

修改nginx.conf后,重启nginx服务:

sudo服务nginx重启服务后,使用netstat -ltn命令检查TCP监听的端口,确认Nginx的监听端口是否正常。

一般情况下,一个是我们自己设置的rtmp服务监听端口8888,另一个80是Nginx默认的HTTP服务监听端口。

接下来可以在浏览器中输入本地IP地址:http://127.0.0.1/,查看Nginx服务的开启状态。

2.6设置开机。

WGET http://raw . github . com/jasongiedymin/nginx-init-Ubuntu/master/nginx-o/etc/init . d/nginxchmod+x/etc/init . d/nginxupdate-RC . d nginx defaults 2.7 3控制nginx服务的命令

服务nginx启动服务nginx停止服务nginx重启或nginx -s重载2.8进行rtmp推送

服务器设置好之后,推流和拉流的地址分别是:rtmp://<>::8888/live/<推送流存储的目录>:例如:rtmp://127 . 0 . 0 . 1:8888/live/XL 2.9 nginx保存流视频文件。

如果您需要保存推送的文件以便以后查看历史文件,您可以配置nginx来保存它们。

在原始/usr/local/nginx/conf/nginx . conf配置文件中向rtmp模块添加新配置:

全部记录;上的record _ unique记录路径"。/video ";#视频缓存记录的路径_后缀-% y-% m-% d-% h _ % m _ % s . flv;complete/usr/local/nginx/conf/nginx . conf中rtmp模块的配置如下:

#RTMP服务rtmp { server { listen 8888应用程序直播{直播;#打开实时记录全部;上的record _ unique记录路径"。/video ";#视频缓存记录的路径_后缀-% y-% m-% d-% h _ % m _ % s . flv;}}}配置完成后,只需执行nginx -s reload命令重启服务器即可。

2.10 rtmp直播流转换成hls直播流。

什么是HLS直播流?

HLS代表HTTP Live Streaming,是苹果公司提出的基于HTTP的媒体流协议,用于实时音频和视频流的传输。目前,HLS协议广泛应用于视频点播和直播。HLS的原理和DASH协议的原理非常相似。通过将整个流切割成一个可以通过HTTP下载的小媒体文件,然后提供一个匹配的媒体列表文件给客户端,客户端就可以依次拉取这些媒体文件并播放,从而达到播放一个流的效果。由于传输层协议只需要标准的HTTP协议,HLS可以很容易的穿越防火墙或者代理服务器,可以很方便的使用CDN加速分发,客户端实现起来也很方便。HLS将整个流分成基于HTTP的小文件来下载,一次只下载一部分。HLS协议由三部分组成:HTTP、M3U8和ts。这三部分中,HTTP是传输协议,M3U8是索引文件,ts是音视频的媒体信息。HLS协议编码格式要求:

视频的编码格式:H264音频编码格式:AAC、MP3、AC-3视频封装格式:ts保存ts index/usr/local/nginx/conf/nginx . conf的m3u8文件配置将RTMP流转换为HLS流。

向http模块的服务器配置添加新配置:

location/live _ HLS { types { # m3u 8 type Set application/vnd . apple . mpegurlm 3 u 8;#ts片段文件设置video/mp2ts;} #指向目录别名。/m3u8File用于访问m3u8文件;# Add _ header cache-control no-cache作为rtmp模块中的hls_path设置路径;#无缓存}向rtmp模块的服务器配置添加新配置:

hls开启;#打开hlshls_path。/m3u 8 file;# HLS的ts切片存储路径(这是一个目录,会自动创建)hls _ fragment 2s#本地切片长度hls _ playlist _ length 6s#HLS播放列表长度/usr/local/nginx/conf/nginx . conf文件的完整配置如下:

worker _ process 1;#Nginx进程数,建议设置为等于总CPU核心数事件{ worker _ connections 1024#工作模式和最大连接数} rtmp _ auto _ push on#RTMP服务rtmp { server { listen 8888应用程序直播{直播;#打开实时记录全部;上的record _ unique记录路径"。/video ";#视频缓存记录的路径_后缀-% y-% m-% d-% h _ % m _ % s . flv;hls开启;#打开hls hls_path。/m3u 8 file;#hls的ts切片存储路径是hls _ fragment 2s#本地切片长度hls _ playlist _ length 6s#HLS播放列表长度}}} #HTTP服务http { includedmime.typesdefault_type应用程序/八位字节流;在上发送文件;keepalive _ timeout 65服务器{ listen 8099server_name本地主机;location/{ root html;索引index.html index.htm;} location/live _ HLS { types { # m3u 8 type Set application/vnd . apple . mpegurlm 3 u 8;#ts片段文件设置video/mp2ts;} #指向目录别名。/m3u8File用于访问m3u8文件;add _ header Cache-Control no-Cache;#禁止缓存}位置/控制{ rtmp _ controlall} location/stat { rtmp _ stat all;rtmp _ stat _ stylesheet stat.xsl}location /stat.xsl{ root。/nginx-rtmp-module-master;} #将服务器错误页重定向到静态页/50x . html # error _ page 500 502 503 504/50x . html;location =/50x . html { root html;}}}配置完毕,重启服务器即可。

根据之前的配置,RTMP推流地址和HTTP访问地址如下:

RTMP推拉地址:rtmp://127 . 0 . 0 . 1:8888/live/video 01那么HTTP的对应访问地址:HTTP://127 . 0 . 0 . 1:8099/live _ HLS/video 01 . m3 u8注意:转换成HLS流后,如果手机浏览器普遍支持,比如苹果自带的浏览器,QQ浏览器等浏览器都支持直接播放HLS流。默认不支持PC的Google浏览器。

2.11 NGINX配置HTTP文件服务器

5.8节介绍如何配置NGINX保留rtmp推送的视频文件。如果想做一个有现场回放和历史记录的播放器,可以使用RTMP视频缓存的目录作为HTTP文件服务器访问的根目录。通过访问这个根目录,可以得到目录中文件的索引,然后就可以直接播放视频文件了,这样就可以做视频播放播放器了。

在http模块中添加新的服务器配置,并填写新的配置。详情如下:

服务器{ listen 8090server_name本地主机;location / {root。/视频;#指定哪个目录是Http文件服务器的根目录。如果你在这里写文件是你的根目录,那么当你访问它的时候,文件将不会出现在目录中。自动索引打开;# Setting允许列出整个目录autoindex _ exact _ size off# Default为on,以字节显示文件的确切大小。更改为off后,以kB或MB或GBautoindex_localtime on显示文件的大致大小;#默认为关闭,显示的文件时间为GMT时间。在上,显示的文件时间是文件字符集utf-8的服务器时间;#防止文件显示乱码。如果utf-8还是乱码,尽量改成gbk}}特别说明:nginx支持配置多个服务器配置,监听不同端口。可以为文件服务器设置单独的监听端口,专门用作文件遍历。

/usr/local/nginx/conf/nginx . conf文件的完整配置如下:

worker _ process 1;#Nginx进程数,建议设置为等于总CPU核心数事件{ worker _ connections 1024#工作模式和最大连接数} rtmp _ auto _ push on#RTMP服务rtmp { server { listen 8888应用程序直播{直播;#打开实时记录全部;上的record _ unique记录路径"。/video ";#视频缓存记录的路径_后缀-% y-% m-% d-% h _ % m _ % s . flv;hls开启;#打开hls hls_path。/m3u 8 file;#hls的ts切片存储路径是hls _ fragment 2s#本地切片长度hls _ playlist _ length 6s#HLS播放列表长度}}} #HTTP服务http { includedmime.typesdefault_type应用程序/八位字节流;在上发送文件;keepalive _ timeout 65服务器{ listen 8090server_name本地主机;location / {root。/视频;#指定哪个目录是Http文件服务器的根目录。如果你在这里写文件是你的根目录,那么当你访问它的时候,文件将不会出现在目录中。自动索引打开;# Setting允许列出整个目录autoindex _ exact _ size off# Default为on,以字节显示文件的确切大小。更改为off后,以kB或MB或GBautoindex_localtime on显示文件的大致大小;#默认为关闭,显示的文件时间为GMT时间。在上,显示的文件时间是文件字符集utf-8的服务器时间;#防止文件显示乱码。如果utf-8还是乱码,换成gbk试试} } server { listen 8099server_name本地主机;location/{ root html;索引index.html index.htm;} location/live _ HLS { types { # m3u 8 type Set application/vnd . apple . mpegurlm 3 u 8;#ts片段文件设置video/mp2ts;} #指向目录别名。/m3u8File用于访问m3u8文件;add _ header Cache-Control no-Cache;#禁止缓存}位置/控制{ rtmp _ controlall} location/stat { rtmp _ stat all;rtmp _ stat _ stylesheet stat.xsl}location /stat.xsl{ root。/nginx-rtmp-module-master;} #将服务器错误页重定向到静态页/50x . html # error _ page 500 502 503 504/50x . html;location =/50x . html { root html;}}}访问文件测试:http://127.0.0.1:8090

3.Linux 3.1启动脚本序列下启动的执行过程

第一步:init /etc/inittab第二步:启动相应的脚本,打开终端rc.sysinitrc.d(里面的脚本)rc.local第三步:启动登录界面登录第四步:用户登录时执行sh脚本的顺序,你每次登录都会完整执行。/etc/profile . d/file/etc/profile/etc/bashrc/root/。bashrc/root/。bash _ profile 3.2 Linux修改环境变量和有效方法。

修改/etc/profile或/etc/bashrc可以使环境变量的所有用户全局有效(需要重新启动系统)。正在修改~/。bash_profile或者~/。bashrc对当前用户全局有效(需要重新启动系统)。

如果需要立即生效,使用修改后的source命令,比如:source。bash_profile。

3.3 rcx . d的启动级别

一般在需要自启动的时候,通常是通过在/etc/rc.local文件中编写命令行或者脚本来执行命令来实现的。也可以在/etc/profile文件中实现(不推荐)。

许多Linux发行版现在默认使用/etc/rcX.d,而不是/etc/rc.local。

RcX.d不是指这个目录或者文件,而是叫rcX.d,其中X对应7个数字,0~6,不同的数字对应不同的级别。

检查当前的system /etc/rcX.d目录:

[root @ ECS-C687-ecrs work]# ls/etc/| greprcbashrccsh . cshrcinputrcmail . RCC 0 . dr C1 . dr C2 . dr C3 . dr C4 . dr C5 . DRC . DRC . localvimrcvgetrc通过runlevel命令检查当前系统的启动级别:

本人目前使用的是CentOS7.4服务器版,启动级别如下:

[root @ ECS-C687-ECRS]# run level N3查看/etc/rc3.d/目录下文件的详细信息:

[root @ ECS-c687-ecrs ~]# ls/etc/rc3 . d/-l total 0 lrwxrwxrwx。1根根20 2022年2月14日K50netconsole ->../init . d/netconsolerrwxrwxrwx。1根17根2022年2月14日k90网络->;../init . d/networklrwxrwxrwx 1 root root 19 Sep 15 22:07 S12 host guard->../init . d/hostguardlrwxrwxrwx 1 root root 24 Feb 14 2022 s50多队列-HW->。/init.d/multi-queue-hw你可以看到这个目录下的文件都是链接文件,都指向/etc/init.d中的shell脚本或者其他可执行文件,它们的命名方式基本都是以S或者K开头,后面加一个数字,再加上链接文件的名称,可以自己定义。

命名规则解释如下:

以K90network为例:k代表停止,s代表开始。(表示需要传入参数),也就是说,启动自启动命令会将start或stop传递给脚本,在脚本中,可以接收参数进行一些判断,完成不同情况下的一些逻辑处理。比如开机时执行什么代码,关机时执行什么代码。90表示脚本执行级别。(通常优先级越小)网络与/etc/init.d下的脚本文件名一致3.4使用rcX.d实现启动时脚本自动执行

例如,要求在引导后创建一个文件,并在文件中存储一些数据。

(1)首先在/etc/init.d目录下创建一个up_demo.sh脚本,编写脚本代码:

#!/bin/bash echo $ 0 $ 1 >& gt/home/up_test.txt修改脚本权限:

[root @ ECS-C687-ECR snit . d]# chmod 777/etc/init . d/up _ demo . sh[root @ ECS-C687-ECR snit . d]# lsup _ demo . sh-l-rwxrwxrwx 1 root 76 sep 16 14:(因为我的系统启动级别是3)

[root @ ECS-c687-ecrs rc3 . d]# ln-s/etc/init . d/up _ demo . sh S10up _ demo[root @ ECS-c687-ecrs rc3 . d]# ls-l total 0 lrwxrwxrwx。1根根20 2022年2月14日K50netconsole ->../init . d/netconsolerrwxrwxrwx。1根17根2022年2月14日k90网络->;../init . d/networklrwxrwxrwx 1 root root 22 Sep 16 14:17 S10 up _ demo->/etc/init . d/up _ demo . shlrwxrwxrwx 1 root root 19 Sep 15 22:07 S12 host guard->../init . d/hostguardlrwxrwxrwx 1 root root 24 Feb 14 2022 s50多队列-HW->。/init.d/multi-queue-hw(3)重启系统,进入/home目录查看文件内容。可以看到引导成功,内容已经写入up_test.txt文件。

欢迎来到华为云服务[root @ ECS-c687-ecrs ~]# CD/home/[root @ ECS-c687-ecrs home]# Ls _ run . sh up _ test . txt video work work _ pcwork.tar.gz[root @ ECS-c687-ecrs home]# catup _ test.txt/etc/rc.d/init.d/up _ demo . sh start[root @ ECS-c687-ecrs

温馨提示:内容均由网友自行发布提供,仅用于学习交流,如有版权问题,请联系我们。