Nginx搭建rtmp流媒体服务器(ubuntu24)

 更新时间:2026年11月06日 09:58:05   作者:LumiTiger  
本文详细介绍了在Ubuntu 24上使用Nginx搭建RTMP流媒体服务器,涵盖安装、配置、防火墙设置、推流测试及高级优化等内容,感兴趣的可以了解一下

在 Ubuntu 24 上使用 Nginx 搭建 RTMP 流媒体服务器是一个很棒的选择,它可以让你实现视频直播和点播功能。下面我将为你详细介绍一步步的操作方法。

下面是搭建过程的整体流程图,帮助你直观地理解每个步骤:

flowchart TD
    A[环境准备与依赖安装] --> B[安装Nginx与RTMP模块]
    B --> C{选择安装方式}
    C -- 包管理器安装
(快速) --> D[配置RTMP服务]
    C -- 源码编译安装
(灵活) --> D
    D --> E[防火墙与权限设置]
    E --> F[推流测试]
    F --> G[播放测试]
    G --> H[高级功能配置
(HLS/安全/多路推流)]

🔧 安装 Nginx 与 RTMP 模块

首先,你需要安装 Nginx 和 RTMP 模块。有以下两种主要方式:

1. 使用包管理器安装(推荐,更简单快捷)
在终端中执行以下命令:

sudo apt update
sudo apt install nginx libnginx-mod-rtmp -y

此方法会自动处理依赖关系,但模块版本可能不是最新的。

2. 源码编译安装(适合需要特定版本或自定义功能)
如果需要最新版本或特定配置,可以从源码编译安装。

# 安装依赖
sudo apt install build-essential libpcre3 libpcre3-dev libssl-dev zlib1g-dev -y

# 下载Nginx和RTMP模块源码
wget http://nginx.org/download/nginx-1.25.3.tar.gz
tar -zxvf nginx-1.25.3.tar.gz
git clone https://github.com/arut/nginx-rtmp-module.git

# 编译安装(注意路径替换)
cd nginx-1.25.3
./configure --add-module=../nginx-rtmp-module --with-http_ssl_module
make && sudo make install

编译安装能提供更大的灵活性,但过程相对复杂。

⚙️ 配置 RTMP 服务

安装完成后,需要配置 Nginx 以启用 RTMP 功能。

1. 编辑配置文件
Nginx 的主配置文件通常是 /etc/nginx/nginx.conf。使用文本编辑器打开它,在文件末尾添加以下 RTMP 配置块:

sudo nano /etc/nginx/nginx.conf

在文件末尾添加以下内容:

rtmp {
    server {
        listen 1935;                   # RTMP 默认监听端口
        chunk_size 4096;               # 数据块大小
        ping 30s;                       # 保活心跳时间
        notify_method get;               # 通知方法

        # 直播应用
        application live {
            live on;                     # 启用直播
            record off;                  # 关闭录制功能
            # 如果需要录制,可设置为 record all 并指定路径 record_path /var/rec;
            
            # 可选的访问控制(增强安全性)
            # allow publish 192.168.1.0/24; # 只允许指定网段推流
            # deny publish all;            # 拒绝其他所有IP推流
        }

        # HLS 应用(用于支持HTTP自适应流)
        application hls {
            live on;
            hls on;                      # 开启HLS
            hls_path /tmp/hls;           # HLS切片文件存储路径
            hls_fragment 5s;              # 每个TS切片时长
            hls_playlist_length 30s;     # HLS播放列表长度
        }
    }
}

2. 配置HTTP服务器用于HLS和状态监控(可选但推荐)
在配置文件的 http 块内添加以下内容,以便通过HTTP访问HLS流和服务器状态:

http {
    ... (其他原有配置)

    server {
        listen 80;
        server_name localhost;

        # HLS 流访问端点
        location /hls {
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            root /tmp;                   # 与rtmp配置中的hls_path对应
            add_header Cache-Control no-cache; # 禁用缓存用于实时播放
            add_header Access-Control-Allow-Origin *; # 解决跨域问题
        }

        # RTMP 状态监控页面
        location /stat {
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }
        
        # 状态页面的样式文件
        location /stat.xsl {
            root /usr/local/nginx/nginx-rtmp-module; # 或模块所在路径
        }
    }
}

3. 测试配置并重启Nginx
保存配置文件后,执行以下命令:

# 测试配置文件语法是否正确
sudo nginx -t

# 如果测试成功,重新加载Nginx配置或重启Nginx服务
sudo systemctl reload nginx
# 或者 sudo systemctl restart nginx

# 如果使用源码编译安装,启动命令可能是
sudo /usr/local/nginx/sbin/nginx

🔒 防火墙与权限设置

确保系统的防火墙允许 RTMP 端口(默认为1935)通信:

sudo ufw allow 1935/tcp   # 允许RTMP流量
sudo ufw allow 80/tcp      # 如果使用HLS,允许HTTP流量

📡 推流与播放测试

服务器配置好后,可以进行推流和播放测试。

1. 推流测试
使用 OBS Studio 推流是最简单的方法:

  • 在OBS的"设置" -> "推流"中,选择"自定义"服务
  • 服务器地址填写:rtmp://你的服务器IP/live
  • 流密钥可以自定义,例如:test_stream
  • 然后点击"开始推流"

也可以使用 FFmpeg 进行推流测试:

ffmpeg -re -i 你的视频文件.mp4 -c:v libx264 -c:a aac -f flv "rtmp://localhost/live/test_stream"

2. 播放测试

  • RTMP 流播放:使用 VLC 播放器,打开"媒体" -> “打开网络串流”,输入地址:rtmp://你的服务器IP/live/test_stream
  • HLS 流播放(如果配置了HLS):在支持HLS的播放器(如VLC或浏览器中的播放器)中输入:http://你的服务器IP/hls/test_stream.m3u8

3. 查看服务器状态
如果配置了状态页面,可以通过浏览器访问 http://你的服务器IP/stat 查看当前流和连接状态。

🚀 高级功能与优化配置

1. 启用HLS支持
HLS(HTTP Live Streaming)能让你的直播流更容易通过HTTP分发,并更好地适应不同网络条件。配置参考前面的HLS应用部分。

2. 多路推流与转码
你可以配置Nginx将接收到的流自动推送到其他平台(如YouTube或Twitch):

application live {
    live on;
    record off;
    
    # 推送到其他RTMP服务器
    push rtmp://其他服务器地址/路径/流密钥;
}

3. 安全加固

  • 推流认证:可以通过HTTP回调实现推流认证
  • IP限制:如前面配置所示,限制推流IP范围
  • HTTPS加密:为状态页面和HLS流配置SSL/TLS加密

⚠️ 常见问题排查

如果遇到问题,可以检查以下几点:

  1. 查看Nginx错误日志:sudo tail -f /var/log/nginx/error.log
  2. 确认端口1935是否监听:sudo netstat -tlnp | grep 1935
  3. 检查防火墙设置是否阻止了相关端口
  4. 验证推流地址和流密钥是否正确

到此这篇关于Nginx搭建rtmp流媒体服务器(ubuntu24)的文章就介绍到这了,更多相关Nginx rtmp流媒体服务器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Nginx的缓存配置与其他配置方法

    Nginx的缓存配置与其他配置方法

    Nginx的压缩功能配置是通过gzip压缩技术,可以使原来的网页的内容大小压缩成原来的30%,这样,用户在访问网页的时候,由于传输的内容比原内容小很多,故而速度会快很多,本文给大家介绍Nginx的缓存配置与其他配置方法,感兴趣的朋友一起看看吧
    2023-12-12
  • Nginx反向代理后无法获取客户端真实IP地址

    Nginx反向代理后无法获取客户端真实IP地址

    本文主要介绍了Nginx反向代理后无法获取客户端真实IP地址,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Nginx分布式部署流程分析

    Nginx分布式部署流程分析

    文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事务的挑战,感兴趣的朋友跟随小编一起看看吧
    2025-09-09
  • Nginx的正则表达式详解

    Nginx的正则表达式详解

    今天来聊一聊他的正则表达式的使用规则,我会简单的举几个例子然后进行说明讲解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • Nginx重写功能和反向代理的用法详解

    Nginx重写功能和反向代理的用法详解

    这篇文章主要介绍了Nginx重写功能和反向代理,文中通过代码示例和图文给大家讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-02-02
  • Nginx配置中root和alias的区别及说明

    Nginx配置中root和alias的区别及说明

    这篇文章主要介绍了Nginx配置中root和alias的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Nginx搭建流媒体FLV视频服务器配置示例

    Nginx搭建流媒体FLV视频服务器配置示例

    这篇文章主要介绍了Nginx搭建流媒体FLV视频服务器配置示例,,需要的朋友可以参考下
    2014-08-08
  • nginx的请求转发配置过程

    nginx的请求转发配置过程

    Nginx在Windows和Linux环境下的安装、启动、停止、配置和请求转发过程,配置文件语法检测、优雅关闭、热部署和日志文件重新打开,配置多个服务的请求转发规则,修改前端API地址,设置最大上传文件大小
    2024-12-12
  • 深入解析nginx路由location匹配规则及其优先级

    深入解析nginx路由location匹配规则及其优先级

    Nginx是一款高性能的Web服务器和反向代理服务器,它的路由功能是通过location指令来实现的,location指令用于匹配请求的URL,并将请求转发到相应的处理程序或静态文件,需要的朋友可以参考下
    2023-10-10
  • nginx location指令(匹配顺序匹配冲突)实战示例详解

    nginx location指令(匹配顺序匹配冲突)实战示例详解

    这篇文章主要介绍了nginx location指令(实战示例匹配顺序匹配冲突)详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06

最新评论