• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    通俗易懂讲解nginx-rtmp-module

    发布者: 琛瑞6678 | 发布时间: 2025-8-16 11:51| 查看数: 66| 评论数: 0|帖子模式

    概述
    1. nginx-rtmp-module
    复制代码
    是一个用于 Nginx 的第三方模块,它扩展了 Nginx 服务器的功能,使其能够处理实时流媒体数据,特别是支持 RTMP (Real-Time Messaging Protocol) 协议。RTMP 是 Adobe Systems 开发的一种协议,常用于实时音视频通信,尤其是在直播场景中。
    1. nginx-rtmp-module
    复制代码
    的主要用途包括:

    • 直播服务器:允许用户设置一个简单的直播服务器,主播可以通过 RTMP 协议推送直播流到服务器,而观众可以通过 HLS (HTTP Live Streaming)、RTMP 或其他协议观看直播。
    • 视频点播(VOD):支持视频文件作为点播内容,用户可以随时请求观看存储的视频内容。
    • 转码与录制:可以配置模块进行实时流的转码(需要集成如 FFmpeg 等工具)以及录制直播流到本地文件。
    • 防盗链与访问控制:提供了一些基本的安全措施,比如限制来源 IP、设置密钥验证等,以保护流媒体内容。
    • 负载均衡与故障转移:可以配置 Nginx 作为负载均衡器,将客户端请求分发到多个后端 RTMP 服务器,提高系统的稳定性和可用性。
    • HLS 支持:自动将 RTMP 流转换为 HLS 格式,使得直播内容可以在不直接支持 RTMP 的设备和浏览器上播放,如 iOS 设备和现代网页浏览器。
    通过配置
    1. nginx-rtmp-module
    复制代码
    ,开发者或系统管理员可以轻松搭建高效、可扩展的流媒体服务,适用于各种规模的直播应用需求。这个模块通过其灵活的配置选项,提供了对流媒体处理流程的强大控制能力。
    1. nginx-rtmp-module
    复制代码
    的使用涉及配置 Nginx 的配置文件来实现特定的流媒体处理逻辑。下面是一个简化的示例,展示如何配置 Nginx 使用
    1. nginx-rtmp-module
    复制代码
    来搭建一个基础的直播服务器。

    安装 nginx 和 nginx-rtmp-module

    首先,确保你的系统已经安装了 Nginx。然后,你需要下载 nginx-rtmp-module 源码并编译 Nginx 以包含此模块。以下是基于 Linux 系统的一个基本步骤(具体命令可能根据你的操作系统和版本有所不同):
    1. # 下载 Nginx 源码
    2. wget http://nginx.org/download/nginx-1.18.0.tar.gz
    3. tar -xzf nginx-1.18.0.tar.gz

    4. # 下载 nginx-rtmp-module
    5. git clone https://github.com/arut/nginx-rtmp-module.git

    6. # 进入 Nginx 源码目录并配置编译参数以包含 nginx-rtmp-module
    7. cd nginx-1.18.0
    8. ./configure --add-module=/path/to/nginx-rtmp-module
    9. make
    10. sudo make install
    复制代码
    配置 Nginx

    接下来,修改 Nginx 的配置文件(通常位于
    1. /etc/nginx/nginx.conf
    复制代码
    1. /usr/local/nginx/conf/nginx.conf
    复制代码
    ),添加关于
    1. nginx-rtmp-module
    复制代码
    的配置。以下是一个基本的配置示例:
    1. worker_processes  1;

    2. events {
    3.     worker_connections  1024;
    4. }

    5. http {
    6.     # HTTP 相关配置可以在这里添加,例如服务器根目录等
    7. }

    8. rtmp {
    9.     server {
    10.         listen 1935; # RTMP 默认监听端口

    11.         application live { # 应用名为 live
    12.             live on; # 启用直播模式
    13.             record off; # 不记录直播流,默认关闭,可改为 'record all' 来记录所有流
    14.             
    15.             # 可以在这里添加更多配置,比如推流和拉流的权限控制、转码设置等
    16.         }
    17.         
    18.         # 如果需要支持 HLS,可以添加如下配置
    19.         application hls {
    20.             live on;
    21.             hls on;
    22.             hls_path /tmp/hls; # HLS 文件存放路径
    23.             hls_fragment 5s; # HLS 分片时长
    24.         }
    25.     }
    26. }
    复制代码
    启动 Nginx

    配置完成后,重启或启动 Nginx 以使配置生效:
    1. sudo service nginx restart
    复制代码
    使用示例


    推流

    主播使用支持 RTMP 的软件(如 OBS Studio)向你的服务器推流,URL 为
    1. rtmp://your_server_ip/live/your_stream_key
    复制代码


    拉流


    • RTMP 拉流:
      1. rtmp://your_server_ip/live/your_stream_key
      复制代码
    • HLS 拉流:
      1. http://your_server_ip/hls/your_stream_key.m3u8
      复制代码
    请替换
    1. your_server_ip
    复制代码
    为你的服务器 IP 地址,
    1. your_stream_key
    复制代码
    为自定义的流名称。这只是一个非常基础的示例,实际上
    1. nginx-rtmp-module
    复制代码
    提供了丰富的配置选项,可以实现更复杂的流媒体处理逻辑,如多路复用、转码、鉴权等。
    在上面的基础上,让我们深入探讨一些高级功能和配置示例,以进一步扩展你的流媒体服务器的能力。

    转码
    1. nginx-rtmp-module
    复制代码
    可以与 FFmpeg 配合实现流的实时转码。这允许你接收一个编码格式的流,然后将其转换为不同格式或比特率,以适应不同客户端的需求。
    配置示例(添加到
    1. rtmp
    复制代码
    配置块内):
    1. application adaptive {
    2.     live on;
    3.     hls on;
    4.     hls_path /tmp/hls_adaptive;
    5.     hls_nested on;
    6.    
    7.     # 转码设置
    8.     exec_push /usr/bin/ffmpeg -i rtmp://localhost/$app/$name -c:v libx264 -preset veryfast -b:v 400k -maxrate 400k -bufsize 800k -vf scale=-1:480 -c:a aac -b:a 96k -ar 44100 -f flv rtmp://localhost/hls_adaptive/$name_low;
    9.     exec_push /usr/bin/ffmpeg -i rtmp://localhost/$app/$name -c:v libx264 -preset veryfast -b:v 1000k -maxrate 1000k -bufsize 2000k -vf scale=-1:720 -c:a aac -b:a 128k -ar 44100 -f flv rtmp://localhost/hls_adaptive/$name_high;
    10. }
    复制代码
    这段配置会为每个推送到
    1. adaptive
    复制代码
    应用的流创建两个转码版本:一个低比特率(400kbps),一个高比特率(1000kbps),同时生成对应的 HLS 播放列表。

    鉴权与安全

    为了增强安全性,你可以为推流和拉流添加基本的鉴权机制。
    1. location /live {
    2.     auth_basic "Restricted"; # 弹出的认证对话框提示信息
    3.     auth_basic_user_file /etc/nginx/.htpasswd; # 用户名密码文件路径
    4. }

    5. rtmp {
    6.     server {
    7.         application private {
    8.             live on;
    9.             # 推流鉴权
    10.             on_publish http://localhost/auth.php;
    11.             # 拉流鉴权
    12.             on_play http://localhost/auth.php;
    13.         }
    14.     }
    15. }
    复制代码
    这里,
    1. on_publish
    复制代码
    1. on_play
    复制代码
    指令分别在推流和拉流时调用外部脚本进行鉴权检查。你需要自己编写
    1. auth.php
    复制代码
    脚本来实现具体的逻辑,比如检查请求头中的认证信息是否有效。

    自动录制

    你可以设置自动录制直播流,这对于存档或后期编辑非常有用。
    1. application myapp {
    2.     live on;
    3.     record all;
    4.     record_path /tmp/records;
    5.     record_unique on;
    6.     record_suffix .flv;
    7. }
    复制代码
    这段配置会在
    1. /tmp/records
    复制代码
    目录下为每个流自动创建 FLV 格式的录制文件。
    到此这篇关于通俗易懂讲解nginx-rtmp-module 的文章就介绍到这了,更多相关nginx-rtmp-module 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    来源:互联网
    免责声明:如果侵犯了您的权益,请联系站长(1277306191@qq.com),我们会及时删除侵权内容,谢谢合作!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表