赞
踩
•在前面的课程,Ffmpeg和Nginx都运行在开发板上
拉流端只能在同一个局域网内
不能通过局域网外的互联网访问Ngnix
•想在任何地方,都可以通过互联网访问Nginx,怎么办?
方法1:把Ngnix放到云服务器上
方法2:使用内网穿透技术,把开发板暴露到公网
在局域网内的电脑可以通过internet主动访问网站
如果想要某一个机器想要**主动**访问局域网里面的机器是不可以的
也就是外面的网络不能访问局域网内的机器,这就是为什么要用内网穿透了!
网络传输时,怎么表示“自己”、“对方”:
源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没有叫路由器帮过忙。来获得这个人的数据,不请自来的就会扔掉数据,保护局域网里面的东西,免受破坏。
所以我搭好了摄像头板子,但是我在外面无法主动的访问,查看摄像头数据。
这个时候就需要内网穿透来访问另一个局域网里的电脑。
直接通过云服务器,板子把音频流视频流推给服务器,手机通过云服务器拉流。
我使用的是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
报错了,
./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=
后面还会缺少一些库一起提前安装了
yum -y install pcre-devel openssl openssl-devel
sudo make install
安装完毕!
vi /usr/local/nginx/conf/nginx.conf
修改的内容https://blog.csdn.net/weixin_45566765/article/details/106002280
见第四节前面板子配置nginx.conf,内容是一样的。
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
现在就可以执行
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服务器可以正常运行啦!
开发板执行
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播放器上也可以播放啦!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。