Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,Nginx是一款面向性能设计的HTTP服务器,相较于Apache、lighttpd具有占有内存少,稳定性高以及高并发等优势。在官方测试的结果中Nginx能够支持五万个并行连接,而在实际的运作中,可以支持二万至四万个并行连接。Nginx整体采用模块化设计是Nginx的一个重大特点,甚至http服务器核心功能也是一个模块。旧版本的Nginx的模块是静态的,添加和删除模块都要对Nginx进行重新编译,1.9.11以及更新的版本已经支持动态模块加载。本文将介绍如何在Linux服务器中如何编译部署Nginx以及如何利用Nginx部署RTMP流媒体服务。
编译部署流媒体服务器
使用Nginx部署流媒体服务器需要至少两个库
- Nginx
- nginx-rtmp-module
- ffmpeg(非必须)
其中nginx-rtmp-module是Nginx容器中的一个模块用于处理RTMP请求,nginx-rtmp-module属于开源项目在github上可以下载。Nginx进入官方下载Nginx,本文服务器环境为阿里云Ubuntu.
下载解压Nginx
从官网中获取Nginx以及nginx-rtmp-module1
2wget http://nginx.org/download/nginx-1.16.0.tar.gz
git clone https://github.com/arut/nginx-rtmp-module.git
解压到当前目录
1 | tar -zxvf nginx-1.16.0.tar.gz |

编译安装Nginx
编译安装Nginx,进入刚刚解压的目录并执行configure命令1
2cd nginx-1.16.0
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module
当我执行完configure的时候出现了如下异常

1 | ./configure: error: the HTTP rewrite module requires the PCRE library. |
提示需要PCRE library.见招拆招安装PCRE library.
1 | yum -y install pcre-devel |
继续configure,发现又出现问题了
错误信息如下

1 | ./configure: error: the HTTP gzip module requires the zlib library. |
emmm这里还需要zlib library,安装
1 | yum install -y zlib-devel |
继续configure,这次好像没错了.


当执行完configure命令后在当前目录中生成了Makefile文件,如果没有生成该文件则说明configure在检查环境配置的时候出现了问题,请查阅错误信息。接下来使用make进行安装
1 | make install |
当install执行完后会生成目录/usr/local/nginx(这个目录可以通过./configure的prefix进行配置)。

配置nginx-rtmp服务器
使用vim打开/usr/local/nginx/conf/nginx.conf并添加如下代码
1 | rtmp { |
- listen:端口
- chunk_size:流复用的最大块大小。默认值为4096.此值越大,CPU开销越低。该值不能小于128。
- live:实时模式(直播)
- record:是否是记录模式,可以将流记录在flv文件中,可选值[off|all|audio|video|keyframes|manual]。例如要记录音视频保存到flv视频中可以使用如下代码
1 | record audio video |
更多关于nginx-rtmp配置请参考文档
启动Nginx
启动Nginx,进入sbin目录,执行./nginx命令1
./nginx
打开浏览器,输入http://ip,如果启动成功则可以在浏览器看到如下页面.

配置测试播放器
配置测试播放器,现在可以在服务器中写一个html用于测试直播拉流端。
使用vim打开/usr/local/nginx/html/index.html文件并替换为下边的代码
1 | <html> |
再次打开浏览器输入地址会出现以下页面

注:因使用Flash所以需要浏览器支持Flash
编译安装ffmpeg
因篇幅有限本文不对ffmpeg做过多介绍,只针对本文进行必要步骤介绍。
step 1.
使用命令下载ffmpeg源码或者读者也可以在官网下载,本文以version3.3.9进行编译,这里不建议使用高版本。1
wget https://ffmpeg.org/releases/ffmpeg-3.3.9.tar.gz
step 2.
解压并进行编译1
2tar -zxvf ffmpeg-3.3.9.tar.gz
cd ffmpeg-3.3.9
使用configure命令进行ffmpeg编译1
./configure --disable-yasm
等待命令执行完成,和Nginx一样,当出现Makefile文件的时候就可以进行编译安装了1
make install
ffmpeg编译过程较长(视设备配置而定,大概十多分钟),等待编译完成。编译完成后输入ffmpeg命令检查是否安装成功.