Nginx 搭建 RTMP 服务器

本篇文章主要是记述了基于 Nginx 搭建 RTMP 直播推流服务器。关于安装 Nginx 的内容可以查看这篇博客 《CentOS7 编译安装 nginx》 ,下载 Nginx 源码可以点击这个链接,http://img.zouchanglin.cn/nginx-1.9.9.tar.gz ,下面是 Nginx 推流模块的代码,可以在 Github 下载,但是也可以点击这个链接 http://img.zouchanglin.cn/nginx-rtmp-module.zip。这样在做直播相关的测试的时候就可以用上了。

在编译 Nginx 的时候需要把 nginx-rtmp-module 这个模块也带上:

1
2
./configure --prefix=/usr/local/nginx 
--with-http_ssl_module --add-module=/root/nginx-rtmp-module

下面是 nginx.config 的配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
user root;
worker_processes 2;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

sendfile on;
keepalive_timeout 65;

server {
server_name localhost;
listen 8080;

location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}

# 路径根据实际位置配置
location /stat.xsl {
root /usr/local/nginx/nginx-rtmp-module/;
}

location /control {
rtmp_control all;
}

# 路径根据实际位置配置
location /rtmp-publisher {
root /usr/local/nginx/nginx-rtmp-module/test;
}

# 路径根据实际位置配置
location / {
root /usr/local/nginx/nginx-rtmp-module/test/www;
}
}
}

rtmp {
server {
listen 1935;
chunk_size 4000;
application live {
live on;
hls on;
hls_path /tmp/hls; # rtmp 推流文件存放路径
hls_fragment 5s; # 每个 TS 文件包含 5 秒的视频内容
}
}
}

接下来启动 Nginx 即可,但是在启动之前先建立文件存放的文件夹:

1
2
mkdir /tmp/hls
/usr/local/nginx/sbin/nginx

只要没报错,而且可以访问到 Nginx 的默认页面并且无报错就说明没问题了:

使用 BOS 开始推流,推流服务器选择自定义 URL:rtmp://192.168.199.102/live,如果 OBStudio 不显示图像源的话可以在系统中做如下设置:

已经可以成功推流,那么如何接收这种直播流呢?可以使用 VLC,打开网络串流:rtmp://192.168.199.102/live,这样通过 Nginx 作为 RTMP 直播推流服务器已经实现了。