插件窝 干货文章 如何在Ubuntu14上安装Nginx-RTMP流媒体服务器

如何在Ubuntu14上安装Nginx-RTMP流媒体服务器

Nginx RTMP daemon DASH 441    来源:    2025-04-22

在Ubuntu 14.04上安装Nginx-RTMP流媒体服务器

Nginx-RTMP是一个基于Nginx的流媒体服务器模块,支持RTMP、HLS和DASH协议。以下是在Ubuntu 14.04上安装和配置Nginx-RTMP的详细步骤:

1. 安装依赖项

首先更新软件包列表并安装必要的依赖项:

sudo apt-get update
sudo apt-get install -y build-essential libpcre3 libpcre3-dev libssl-dev zlib1g-dev

2. 下载Nginx和RTMP模块

# 创建工作目录
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

3. 编译安装Nginx with RTMP模块

cd nginx-1.14.2

# 配置编译选项
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-1.2.1

# 编译并安装
make
sudo make install

4. 配置Nginx-RTMP

编辑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;
    }
}

5. 创建必要的目录

sudo mkdir -p /tmp/hls /tmp/dash
sudo chmod -R 755 /tmp/hls /tmp/dash

6. 启动Nginx

sudo /usr/local/nginx/sbin/nginx

7. 验证安装

检查Nginx是否运行:

ps aux | grep nginx

检查1935(RTMP)和8080(HTTP)端口是否监听:

netstat -tulnp | grep -E '1935|8080'

8. 测试流媒体服务器

使用OBS或其他RTMP推流工具推流到:

rtmp://你的服务器IP/live/流名称

播放流: - RTMP: rtmp://你的服务器IP/live/流名称 - HLS: http://你的服务器IP:8080/hls/流名称.m3u8 - DASH: http://你的服务器IP:8080/dash/流名称.mpd

9. (可选) 设置开机启动

创建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

常见问题解决

  1. 编译错误:确保安装了所有依赖项,特别是开发包
  2. 端口冲突:检查1935和8080端口是否被其他程序占用
  3. 权限问题:确保Nginx有权限访问/tmp/hls和/tmp/dash目录
  4. 防火墙设置:确保防火墙允许1935和8080端口

现在你已经成功在Ubuntu 14.04上安装并配置了Nginx-RTMP流媒体服务器!