当前位置:   article > 正文

100ask_imx6ull视频监控项目-内网穿透(六)_im6ull的摄像头

im6ull的摄像头

100ask_imx6ull视频监控项目-内网穿透(六)

•在前面的课程,Ffmpeg和Nginx都运行在开发板上

拉流端只能在同一个局域网内

不能通过局域网外的互联网访问Ngnix

•想在任何地方,都可以通过互联网访问Nginx,怎么办?

方法1:把Ngnix放到云服务器上

方法2:使用内网穿透技术,把开发板暴露到公网

在局域网内的电脑可以通过internet主动访问网站
如果想要某一个机器想要**主动**访问局域网里面的机器是不可以的
在这里插入图片描述
也就是外面的网络不能访问局域网内的机器,这就是为什么要用内网穿透了!

一、IP和端口的作用

在这里插入图片描述
在这里插入图片描述
网络传输时,怎么表示“自己”、“对方”:
源IP/端口 ,目的IP/端口

二、公网IP不够用

IP和端口都很重要,但是IP不够用:

•在家里,在公司里,只有路由器才有公网IP

•其他电脑都只是局域网IP,比如192.168.x.x

•你家里的电脑,公司的电脑,IP都是192.168.0.100,但是它们并没有冲突:因为它们处于不用的局域网

局域网里的电脑要访问外面的网络,怎么办?要路由器帮忙!
在这里插入图片描述

三、对外访问时,路由器来帮忙

在这里插入图片描述
对于一个访问有源地址,也就是私网地址(10.1.1.100)和端口号(1025),访问目的地址(211.100.7.34)某个端口。
主机A没有公网IP,所以需要路由器来帮忙!
路由器把数据包里面的源替换掉,替换成公网地址,分配一个端口:162.105.178.65:16384;访问的目的地址还是(211.100.7.34)不变,这样就发给服务器了。

服务器看到请求一个把数据返回给路由器的公网IP,路由器就变成目的,服务器变成源。路由器服务器发来的数据后,查下表格,之前主机A找我帮过忙,就把数据扔回去给主机A,把里面的目的地址改为主机A的地址(10.1.1.100)

在这里插入图片描述
主机A曾经叫我路由器帮忙,路由器才会转发数据

如果有个人想发给主机B肯定是不行的,因为B没有叫路由器帮过忙。来获得这个人的数据,不请自来的就会扔掉数据,保护局域网里面的东西,免受破坏。

所以我搭好了摄像头板子,但是我在外面无法主动的访问,查看摄像头数据。

这个时候就需要内网穿透来访问另一个局域网里的电脑。

四、在阿里云服务器上运行Nginx

在这里插入图片描述
直接通过云服务器,板子把音频流视频流推给服务器,手机通过云服务器拉流。

1)下载编译

我使用的是cenots云服务器,试了ubuntu的云服务器但是好像下载不了后面的pcre-devel openssl openssl-devel这些包,就换centos系统了。

cd /home/book
mkdir nginx
cd nginx

wget http://nginx.org/download/nginx-1.17.9.tar.gz

git clone https://github.com/winshining/nginx-http-flv-module.git

tar xzf nginx-1.17.9.tar.gz
cd nginx-1.17.9

./configure --add-module=/home/book/nginx/nginx-http-flv-module

  • 1
  • 2

报错了,
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre= option.

后面还会缺少一些库一起提前安装了
yum -y install pcre-devel openssl openssl-devel

sudo make install
在这里插入图片描述
安装完毕!

2)修改配置文件

vi /usr/local/nginx/conf/nginx.conf
修改的内容https://blog.csdn.net/weixin_45566765/article/details/106002280
见第四节前面板子配置nginx.conf,内容是一样的。

3)服务器启动nginx服务

sudo mkdir -p /var/log/nginx /var/tmp/nginx

我用的是centos,没有安装start-stop-daemon,执行不了下面这条命令
start-stop-daemon -S -x “/usr/local/nginx/sbin/nginx”
-p “/var/run/nginx.pid”

原因是没有安装自启动:start-stop-daemon

centos安装start-stop-daemon:

cd /home/book
wget http://developer.axis.com/download/distribution/apps-sys-utils-start-stop-daemon-IR1_9_18-2.tar.gz
tar -xzvf apps-sys-utils-start-stop-daemon-IR1_9_18-2.tar.gz
# 然后进入解压之后的路径 一直 cd 到start-stop-daemon.c在的目录 
cc start-stop-daemon.c -o start-stop-daemon
cp start-stop-daemon /usr/bin/start-stop-daemon
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述
在这里插入图片描述
现在就可以执行
start-stop-daemon -S -x “/usr/local/nginx/sbin/nginx”
-p “/var/run/nginx.pid”
这个命令应该是可以开机时自动启动

或者直接执行启动命令:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

记得把服务器的1935端口的tcp开放。
如果ngingx绑定失败可以执行
netstat -ntlp
找到nginx的进程号,把他kill 掉重新执行启动命令
在这里插入图片描述

浏览器输入云服务器的IP地址:

在这里插入图片描述
nginx服务器可以正常运行啦!

4)板子推流给云服务器

开发板执行
ffmpeg -re -i test.mp4 -vcodec copy -acodec copy -f flv rtmp://47.92.11x.xx/live/wei

这里的地址就是我们云服务器的地址

看到网页可以下载了
http://47.92.11x.xx/test?app=live&stream=wei
在这里插入图片描述
在这里插入图片描述

在我们vlc播放器上也可以播放啦!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/607820
推荐阅读
相关标签
  

闽ICP备14008679号