300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 使用nginx结合nginx-rtmp-module搭建rtmp流媒体服务器

使用nginx结合nginx-rtmp-module搭建rtmp流媒体服务器

时间:2020-07-19 18:14:45

相关推荐

使用nginx结合nginx-rtmp-module搭建rtmp流媒体服务器

环境:centos7、nginx 1.15.2、nginx-rtmp-module(nginx模块)、win7主机,vmvare虚拟机(已安装号centos7系统)

安装前提:centos已安装OpenSSL、pcre、zlib

1、检查依赖文件是否安装

检测openssl:rpm -qa | grep openssl

检测pcre:rpm -qa | grep pcre

检测zlib:rpm -qa | grep zlib

我的机器上都已经安装……继续下一步

2、下载nginx和rtmp模块

使用的是Git下载的,您也可以使用其他方式获得源码,为方便使用,在/home下建立一个source目录

cd /homemkdir source

下载源码

cd ./sourcegit clone /nginx/nginx.git #从github服务器上将nginx的源代码下载下来git clone /arut/nginx-rtmp-module.git #将rtmp模块的源码下载下来

3、配置nginx的安装

进入nginx目录中,编写一个执行脚本,(也可以直接执行命令)

vim config.sh#然后输入下面的内容./auto/configure --prefix=/usr/local/nginx \--with-http_ssl_module \--with-http_v2_module \--with-http_flv_module \--with-http_mp4_module \--add-module=../nginx-rtmp-module/

./auto/configure是nginx的编译配置文件

每行后面的\告诉解析器接下来的一行与该行是统一个命令

给脚本赋予执行权限 ,并执行脚本

chmod 777 config.sh./config.sh

一定要加上路径标识

若出现以下界面说明配置没有问题

4、开始编译并安装

make make install

也可以将两个命令合成一个命令执行:make && make install

若出现错误,可能是gcc、c++编译器没有安装,执行下面的安装命令重新执行上面的命令即可

yum -y install gcc gcc-c++

安装成功后即可,若出现其他错误,请自行解决

5、测试nginx是否安装成功

启动nginx:

/usr/local/nginx/sbin/nginx

其他nginx命令

#重新加载nginx配置文件/usr/local/nginx/sbin/nginx -s reload #停止nginx/usr/local/nginx/sbin/nginx -s stop

使用:netstat -tunpl 命令查看80端口是否监听(该命令可能会报错,请参考下面安装net-tools工具)

查看服务器的ip地址。由于centos7 请使用以下命令查看网络地址信息

ip addr

若想使用ifconfig命令(netstat命令也一样),安装net-tools工具包

yum -y install net-tools

然后通过本地主机访问nginx服务,在浏览器中输服务器的ip地址并回车,若看到以下界面说明nginx已安装成功

若没有出现上面的界面,并且服务器的80端口已正常监听,可能是防火墙的问题,关闭centos7的防火墙,centos7的防火墙默认是firewalld,输入以下命令即可关闭firewalld

service stop firewalld

再次通过浏览器访问服务器ip,若还是不成功,可能是selinux的问题,请自行百度查找关闭selinux的方法

6、配置nginx.conf文件,启用rtmp服务

cd /usr/local/nginx/conf#编辑nginx文件vim nginx.conf#在文件的末尾写入以下内容rtmp {server {#rtmp服务监听的端口listen 1935; chunk_size 4096;#rtmp线路1application live {live on;record off;}#直播线路2application live2 {live on;record off;}application vod {play /var/flvs;}application vod_http {play http://192.168.1.135/vod;}#是否启用hls协议application hls {live on;hls on;hls_path /tmp/hls;}}}

配置完成后重新加载nginx的配置,并查看对应的端口是否成功监听

7、测试推流和拉流

推流测试

地址:rtmp://<IP>/live/房间标识

如:rtmp://192.168.1.135/live/test (使用的是rtmp协议,live为配置文件中直播线路的application名称,test为房间标识)

可以使用OBS软件进行推流(百度搜索)

这里我使用的是ffmpeg来进行推流,该软件可以将一个视频文件推到一条直播流中

使用本地主机,下载ffmpeg,下载完成后解压文件,并进入bin目录

为方便,我在bin目录下放了一个MP4的文件,按住shift键,在文件浏览器空白处右击,选择在此处打开命令窗口

在dos窗口中执行下面的命令

ffmpeg -re -i batch.mp4 -c copy -f flv rtmp://192.168.1.135:1935/live/test

出现以下界面说明正在推流,

测试拉流

点击拉流测试进入测试页面

出现以上界面时,在server中填写rtmp的服务器地址,即:rtmp://192.168.1.135/live。在stream中填写房间标识,即:test,然后点击start,若没有问题,稍等一会即可出现视频画面。

若出现以下界面。请更换浏览器

附加:添加权限验证

有些时候我们需要验证这个推流地址是否是拥有者正在使用,则可以添加一个密钥key验证身份,

首先,配置nginx.conf中的rtmp模块

rtmp {server {listen 1935;chunk_size 4096;#回调数据转发方式notify_method GET;application live {live on;#开启推流回调验证publish_notify on;#回调验证地址on_publish /api/client/callback;#record off;}application live2 {live on;record off;}application vod {play /var/flvs;}application vod_http {play http://192.168.1.135/vod;}application hls {live on;hls on;hls_path /tmp/hls;}}}

然后重新载入nginx的配置文件,对应的推流地址为:

rtmp://192.168.1.135/live/test?key=[key]

在对应的回调地址中写验证程序(这里使用的是php),由于刚才配置的回调数据转发方式的GET,这里是有$_GET接收数据

$steam = $_GET['name'];//房间标识名称$key = $_GET['key'];//接收的密钥//验证逻辑,check()方法自己定义$res = check($steam,$key);if($res){//验证成功return ;}else{//验证失败,返回一个404错误header('HTTP/1.0 404 Not Found');}

至此,简单的搭建rtmp流媒体服务器和简单的验证已经完成,感兴趣的小伙伴可以试下

参考文章:/qzcsu/article/details/72782759

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。