问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

基于Nginx与Nginx-rtmp-module实现流媒体服务器搭建

创作时间:
作者:
@小白创作中心

基于Nginx与Nginx-rtmp-module实现流媒体服务器搭建

引用
CSDN
1.
https://blog.csdn.net/2401_86544677/article/details/145674508

在直播、视频点播等场景中,流媒体服务器是核心基础设施之一。本文介绍如何基于 Nginxnginx-rtmp-module 快速搭建一个支持 RTMP/HLS 协议的流媒体服务器,实现直播推流与拉流功能。方案轻量、开源,适合个人开发者或中小企业快速部署。

环境准备

  • 操作系统:Linux(以 Ubuntu 20.04 为例)
  • 依赖工具:GCC、Make、Git、OpenSSL 等
  • 核心组件
  • Nginx 1.18+(需源码编译)
  • nginx-rtmp-module(GitHub开源模块)

实现步骤

1. 安装依赖库

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

2. 下载源码并编译

# 下载Nginx源码
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar -zxvf nginx-1.18.0.tar.gz
# 下载rtmp模块
git clone https://github.com/arut/nginx-rtmp-module.git
# 编译安装Nginx(添加rtmp模块)
cd nginx-1.18.0
./configure --add-module=../nginx-rtmp-module --with-http_ssl_module
make
sudo make install

3. 配置Nginx

编辑配置文件 /usr/local/nginx/conf/nginx.conf,在末尾添加以下内容:

rtmp {
    server {
        listen 1935;  # RTMP默认端口
        chunk_size 4096;
        application live {
            live on;            # 启用直播
            record off;         # 关闭录制
            allow publish all;  # 允许所有推流请求
            allow play all;     # 允许所有拉流请求
            # 启用HLS(可选)
            hls on;
            hls_path /tmp/hls;
            hls_fragment 3s;
            hls_playlist_length 60s;
        }
    }
}
# 若启用HLS,需配置HTTP访问
http {
    server {
        listen 80;
        location /hls {
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            root /tmp;
            add_header Cache-Control no-cache;
        }
    }
}

4. 启动Nginx

sudo /usr/local/nginx/sbin/nginx

功能测试

推流测试

使用 OBS StudioFFmpeg 推送视频流:

  • 推流地址
    rtmp://服务器IP/live/自定义流名称
    (示例:rtmp://192.168.1.100/live/mystream

拉流测试

  • RTMP协议
    使用 VLC 播放:rtmp://服务器IP/live/mystream
  • HLS协议(需配置生效):
    播放地址:http://服务器IP/hls/mystream.m3u8

应用场景

  1. 个人直播:搭建私有直播平台,支持低延迟RTMP推流。
  2. 企业培训:结合HLS实现视频点播,适配多终端播放。
  3. 监控系统:转发摄像头RTSP流为RTMP/HLS协议。

总结

通过 Nginx 与 nginx-rtmp-module 的组合,开发者可以快速部署一个轻量级流媒体服务器,支持主流直播协议。后续可扩展功能:

  • 配置鉴权提升安全性
  • 结合FFmpeg实现转码
  • 添加负载均衡优化性能

注意事项:若服务器部署在公网,需开放防火墙的1935(RTMP)和80/443(HLS)端口。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号