首先,这是一个带弹幕的直播系统,弹幕使用的是上一篇文章中配置的系统。
说是TUNA直播系统,实际上用的只是TUNA的弹幕系统和直播的前端页面,核心的还是Nginx的rtmp功能。
但是Nginx本身是没有rtmp功能的,我们需要扩展来实现。而加入扩展就需要我们手动编译安装Nginx。下面就来详细介绍一下整个过程。
首先编译安装带nginx-rtmp-module扩展的Nginx。其中需要安装pcre库(源代码而不是二进制),CentOS可以yum install pcre-devel
,Ubuntu可以apt-get install libpcre3-dev
,当然也可以手动下载pcre源码,然后用--with-pcre=<path>
指定pcre路径。我们这里是以CentOS为例。
mkdir -p /opt/tuna/nginx_files
cd /opt/tuna/nginx_files
# 处理nginx-rtmp-module
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
mv master.zip nginx-rtmp-module.zip
unzip nginx-rtmp-module.zip
mv nginx-rtmp-module-master nginx-rtmp-module
# 安装pcre
yum install pcre-devel
# 处理Nginx
wget http://nginx.org/download/nginx-1.13.9.tar.gz
tar zxvf nginx-1.13.9.tar.gz
cd nginx-1.13.9
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module --prefix=/opt/tuna/nginx_files/nginx
make
make install
ln -s /opt/tuna/nginx_files/nginx/sbin/nginx /usr/sbin/nginx
接下来我们配置Nginx。我们假设配置文件在/opt/tuna/nginx_files/fz.conf
,html目录在/opt/tuna/nginx_files/html
。
mkdir -p /opt/tuna/nginx_files/html
cd /opt/tuna/nginx_files
mv nginx/conf/nginx.conf nginx/conf/nginx.conf.bak
ln -s /opt/tuna/nginx_files/fz.conf /opt/tuna/nginx_files/nginx/conf/nginx.conf
然后我们写一下Nginx的配置文件,我们将如下内容写入至/opt/tuna/nginx_files/fz.conf
,注意要替换端口和域名。
worker_processes 1;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935;
#chunk_size 4096;
chunk_size 512;
hls_fragment 1s;
#hls_playlist_length 3s;
application hls {
live on;
hls on;
hls_path /tmp/hls;
}
}
}
# HTTP can be used for accessing RTMP stats
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 你的http端口;
server_name 你的域名;
location / {
root /opt/tuna/nginx_files/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /opt/tuna/nginx_files/html;
}
location /hls {
# Serve HLS fragments
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /tmp;
add_header Cache-Control no-cache;
}
location /showstat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root /opt/tuna/nginx_files/nginx-rtmp-module/;
}
}
}
然后执行nginx -s reload
。
注意:配置中只设置了hls,并没有提供其他的协议。
然后将写好的html文件放到html文件夹中。我这里有一份写好的文件。但要注意:
- 需要修改
index.html
和static/danmaku/danmaku.js
两个文件。 - 需要修改的内容有三个:你的域名、你的http端口、你的弹幕服务的http端口。
接下来只需要下载安装obs即可。然后在设置界面中设置好流的URL和流名称。
在设置里选择自定义流媒体服务器
,URL填rtmp://你的域名/hls/
,流名称随便填一个,以fz为例。
然后开始推流即可。
直播页面即为http://你的域名:你的http端口/?p=hls&vid=fz
,其中vid=fz
中的fz即为你填写的流名称。
如果需要弹幕客户端的话,频道选择demo即可。
参考文档:
http://blog.waterlin.org/articles/using-nginx-rtmp-module-to-build-broadcast-system.html
Comments
注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。