目录
1 Centos上Nginx+Rtmp module流媒体服务器搭建
2 Mac OS上Nginx+Rtmp module流媒体服务器搭建
1 Centos上Nginx+Rtmp module流媒体服务器搭建
1.1 安装
每个人的安装环境是不太一样的,有的某些依赖包已经安装,有的没有,这儿尽量将所有依赖包都介绍完整。本人的实验环境是在腾讯云上申请的一台云服务器,配置以系统环境如下:
配置:
系统环境:
注意1:后续的软件安装都需要权限,要么是root用户,要么请使用sudo su来获取相应权限
注意2:centos上查看某个软件是否安装,比如gcc,可以使用rpm -qa gcc来查询,若已经安装,命令行将输出版本信息,否则将什么也不输出
1.1.1 安装gcc
yum -y install gcc gcc-c++
由于后续需要下载nginx源码进行编译安装,编译工具就是gcc,因此需要安装gcc。
1.1.2 安装pcre
yum install -y pcre pcre-devel
PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。
1.1.3 安装zlib
yum install -y zlib
zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。
1.1.4 安装openssl
yum install -y openssl
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。
1.1.5 安装Nginx+Rtmp Module
[root@VM_0_17_centos ~]# cd /usr/local/src
[root@VM_0_17_centos src]# mkdir nginx #在/usr/local/src创建nginx目录
[root@VM_0_17_centos src]# cd nginx #进入此目录,nginx源码以及rtmp模块的源码将下载在此目录下
[root@VM_0_17_centos nginx]# git clone https://github.com/arut/nginx-rtmp-module.git #下载nginx-rtmp-module
[root@VM_0_17_centos nginx]# wget http://nginx.org/download/nginx-1.10.3.tar.gz #下载nginx安装包
[root@VM_0_17_centos nginx]# tar -zxvf nginx-1.10.3.tar.gz #解压nginx安装包
[root@VM_0_17_centos nginx]# cd nginx-1.10.3 #进入解压目录
[root@VM_0_17_centos nginx-1.10.3]# ./configure --add-module=../nginx-rtmp-module --with-http_ssl_module #进入常规源码安装3连弹之configure配置
[root@VM_0_17_centos nginx-1.10.3]# make && make install #编译和安装
到此,软件安装完毕
1.2 修改Nginx配置文件 && 启动Nginx
1.2.1 修改Nginx配置文件
按照上述步骤安装完毕之后,nginx的配置文件为/usr/local/nginx/conf/nginx.conf。使用Vim打开之
[root@VM_0_17_centos nginx]# vim /usr/local/nginx/conf/nginx.conf
打开后按i键进入编辑状态,在此文件末尾加上如下配置:
rtmp {
server {
listen 1935; #端口号,rtmp默认为1935,可以修改为其他
application live { #推流的app号,可以修改live为其他
live on;
record off;
}
}
}
编辑完毕,按esc键退出编辑状态,输入:wq保存并退出vim
1.2.2 启动nginx
1. nginx安装后执行文件在 /usr/local/nginx/sbin/nginx,可以执行如下命令运行nginx
[root@VM_0_17_centos sbin]# /usr/local/nginx/sbin/nginx
2. 如果想在任意目录下直接输入nginx就启动nginx,可以给nginx创建一个软连接到PATH环境变量中的任意目录,比如:当前环境中PATH环境变量包含的目录如下:
[root@VM_0_17_centos sbin]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
那么可以给nginx创建一个软链接(类似于windows的快捷方式)到PATH环境变量的上述目录中的一个,一般选择/usr/local/bin:
[root@VM_0_17_centos sbin]# ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/
任意目录执行
[root@VM_0_17_centos sbin]# nginx
3. 查看nginx是否启动成功,可以使用netstat -ntlp命令查看
我们发现nginx启动成功了,并且占用了1935和80端口,1935即是rtmp的推拉流端口,80为nginx的http服务端口
1.3 推流和拉流尝试
推流:如果搭建nginx的机器有公网地址,比如本人申请的腾讯云服务器(有效期15天,配置低,到2019-04-27,公网ip为45.40.197.4 ),那么可以在任意电脑上使用推流软件往此服务器上推送rtmp流数据。推流的软件可以选择ffmpeg,OBS等,此处以ffmpeg为例来展示:
ffmpeg -re -stream_loop -1 -i http://59.80.44.91/vjs.zencdn.net/v/oceans.mp4 -codec copy -f flv rtmp://45.40.197.4:1935/live/video
对此命令稍微解释下:
-re : 按照时间戳读取数据,不加此选项将直接把所有文件读取后直接推出去
-stream_loop -1:推流次数,-1表示无限循环,0表示不循环
-i:输入文件,此处为网络上的文件,也可以改为本地文件
-codec copy:执行流拷贝,不进行转码
-f flv:转封装为flv格式
rtmp://45.40.197.4:1935/live/video : rtmp推流地址,其中live为配置的appname(必须与nginx配置一样),video为streamname
拉流:可以使用ffplay或者vlc播放器进行拉流测试,以ffplay为例,直接执行如下命令:
ffplay rtmp://45.40.197.4:1935/live/video
2 Mac OS上Nginx+Rtmp module流媒体服务器搭建
2.1 安装
2.1.1 安装homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Homebrew简称brew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件,可以说Homebrew就是mac下的apt-get、yum神器
2.1.2 增加对 nginx
的扩展
brew tap homebrew/nginx
增加对 nginx
的扩展;也就是从github上下载,home-brew对ngixnx的扩展.
上述命令可能会执行失败,可以尝试下面这个命令:
brew tap denji/nginx
2.1.3 安装nginx+rtmp模块
brew install nginx-full --with-rtmp-module
到此安装完毕,此时与centos上安装不同的一点是,在任意目录下都可以直接运行nginx命令来启动服务。
2.1.4 查看nginx安装位置
首先来看看我们的nginx安装在哪里
brew info nginx-full
执行上面的命令后我们可以看到信息
- nginx安装所在位置 /usr/local/opt/nginx-full/bin/nginx
- nginx配置文件所在位置 /usr/local/etc/nginx/nginx.conf
- nginx服务器根目录所在位置 /usr/local/var/www
2.2 修改配置文件以及启动nginx
参见centos,此处略
2.3 推拉流尝试
参见centos,此处略