Nginx-RTMP是一个基于Nginx的流媒体服务器模块,支持RTMP、HLS和DASH协议。以下是在Ubuntu 14.04上安装和配置Nginx-RTMP的详细步骤:
首先更新软件包列表并安装必要的依赖项:
sudo apt-get update
sudo apt-get install -y build-essential libpcre3 libpcre3-dev libssl-dev zlib1g-dev
# 创建工作目录
mkdir ~/nginx-rtmp
cd ~/nginx-rtmp
# 下载Nginx和RTMP模块源码
wget http://nginx.org/download/nginx-1.14.2.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/v1.2.1.tar.gz -O nginx-rtmp-module-1.2.1.tar.gz
# 解压文件
tar -zxvf nginx-1.14.2.tar.gz
tar -zxvf nginx-rtmp-module-1.2.1.tar.gz
cd nginx-1.14.2
# 配置编译选项
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-1.2.1
# 编译并安装
make
sudo make install
编辑Nginx配置文件:
sudo nano /usr/local/nginx/conf/nginx.conf
在http {}
块之前添加RTMP配置:
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
# 启用HLS
hls on;
hls_path /tmp/hls;
hls_fragment 3s;
hls_playlist_length 60s;
# 启用DASH
dash on;
dash_path /tmp/dash;
dash_fragment 3s;
dash_playlist_length 60s;
}
}
}
在http {}
块内添加以下内容以支持HLS和DASH播放:
server {
listen 8080;
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /tmp;
add_header Cache-Control no-cache;
}
location /dash {
root /tmp;
add_header Cache-Control no-cache;
}
}
sudo mkdir -p /tmp/hls /tmp/dash
sudo chmod -R 755 /tmp/hls /tmp/dash
sudo /usr/local/nginx/sbin/nginx
检查Nginx是否运行:
ps aux | grep nginx
检查1935(RTMP)和8080(HTTP)端口是否监听:
netstat -tulnp | grep -E '1935|8080'
使用OBS或其他RTMP推流工具推流到:
rtmp://你的服务器IP/live/流名称
播放流:
- RTMP: rtmp://你的服务器IP/live/流名称
- HLS: http://你的服务器IP:8080/hls/流名称.m3u8
- DASH: http://你的服务器IP:8080/dash/流名称.mpd
创建init脚本:
sudo nano /etc/init.d/nginx-rtmp
添加以下内容:
#!/bin/sh
### BEGIN INIT INFO
# Provides: nginx-rtmp
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the nginx-rtmp server
# Description: starts nginx-rtmp using start-stop-daemon
### END INIT INFO
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/nginx/sbin/nginx
NAME=nginx-rtmp
DESC=nginx-rtmp
test -x $DAEMON || exit 0
set -e
case "$1" in
start)
echo -n "Starting $DESC: "
start-stop-daemon --start --quiet --exec $DAEMON
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon --stop --quiet --exec $DAEMON
echo "$NAME."
;;
restart)
echo -n "Restarting $DESC: "
start-stop-daemon --stop --quiet --exec $DAEMON
sleep 1
start-stop-daemon --start --quiet --exec $DAEMON
echo "$NAME."
;;
reload)
echo -n "Reloading $DESC configuration: "
start-stop-daemon --stop --signal HUP --quiet --exec $DAEMON
echo "$NAME."
;;
*)
echo "Usage: $NAME {start|stop|restart|reload}" >&2
exit 1
;;
esac
exit 0
设置权限并启用:
sudo chmod +x /etc/init.d/nginx-rtmp
sudo update-rc.d nginx-rtmp defaults
现在你已经成功在Ubuntu 14.04上安装并配置了Nginx-RTMP流媒体服务器!