首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

nginx rtmp多路推流

使用 Nginx 和 RTMP 模块进行多路推流是一种常见的流媒体解决方案。以下是一个详细的步骤,帮助你设置 Nginx RTMP 服务器并实现多路推流。

1. 安装 Nginx 和 RTMP 模块

首先,你需要安装 Nginx 和 RTMP 模块。你可以从源代码编译安装,或者使用预编译的包。

从源代码编译安装

  1. 安装依赖项: sudo apt-get update sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev zlib1g zlib1g-dev
  2. 下载 Nginx 和 RTMP 模块: wget http://nginx.org/download/nginx-1.21.3.tar.gz wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
  3. 解压文件: tar -zxvf nginx-1.21.3.tar.gz unzip master.zip
  4. 编译和安装 Nginx: cd nginx-1.21.3 ./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master make sudo make install

2. 配置 Nginx RTMP 模块

编辑 Nginx 配置文件(通常位于 /usr/local/nginx/conf/nginx.conf/etc/nginx/nginx.conf),添加 RTMP 配置。

代码语言:javascript
复制
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       8080;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }

        location /stat {
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }

        location /stat.xsl {
            root /usr/local/nginx/html;
        }
    }
}

rtmp {
    server {
        listen 1935;
        chunk_size 4096;

        application live {
            live on;
            record off;

            # 推流到多个目标
            push rtmp://destination1.example.com/live;
            push rtmp://destination2.example.com/live;
        }
    }
}

3. 启动 Nginx

启动或重启 Nginx:

代码语言:javascript
复制
sudo /usr/local/nginx/sbin/nginx

如果 Nginx 已经在运行,使用以下命令重启:

代码语言:javascript
复制
sudo /usr/local/nginx/sbin/nginx -s reload

4. 推流到 Nginx RTMP 服务器

使用流媒体推流工具(如 OBS Studio)将流推送到 Nginx RTMP 服务器。配置 OBS Studio 的推流设置:

  • 服务器:rtmp://<your-server-ip>/live
  • 流密钥:<your-stream-key>

5. 验证多路推流

你可以通过访问 http://<your-server-ip>:8080/stat 查看 RTMP 服务器的状态,确认流是否成功推送到多个目标。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Nginx学习之配置RTMP模块搭建服务

目前仅支持 flv, rtmp 格式。 本篇博客通过介绍使用nginxrtmp模块来使nginx服务支持rtmp协议,可以完成和播放的功能。...这里我们只需要安装nginx-rtmp-module模块即可。.../build/nginx-1.11.2/objs/nginx /usr/local/openresty/nginx/sbin 配置rtmp服务: rtmp { #RTMP服务...PC PC 直播是在 PC(windows/mac)上借助安装的软件 OBS(推荐)或者 XSplit 向RTMP视频云的地址,推送经过压缩编码现场活动、教学、投影或者游戏等画面,同时观众可以通过和地址相对应的播放地址收看实时画面...PC 直播流程非常简单,主要步骤: 通过RTMP自定义一个地址,解决往哪的问题; 采用第三方的软件,设置流音视频源以及编码参数,解决什么内容的问题; 观众就可以使用我们提供的 RTMP

2.1K20

Nginx学习之配置RTMP模块搭建服务

目前仅支持 flv, rtmp 格式。 本篇博客通过介绍使用nginxrtmp模块来使nginx服务支持rtmp协议,可以完成和播放的功能。.../build/nginx-1.11.2/objs/nginx /usr/local/openresty/nginx/sbin 配置rtmp服务: rtmp { #RTMP服务...PC PC 直播是在 PC(windows/mac)上借助安装的软件 OBS(推荐)或者 XSplit 向RTMP视频云的地址,推送经过压缩编码现场活动、教学、投影或者游戏等画面,同时观众可以通过和地址相对应的播放地址收看实时画面...PC 直播流程非常简单,主要步骤: 通过RTMP自定义一个地址,解决往哪的问题; 采用第三方的软件,设置流音视频源以及编码参数,解决什么内容的问题; 观众就可以使用我们提供的 RTMP...推荐阅读:第三方工具使用指南 Web播放 xiaozhibo.html: <!

3.7K110

基于FFmpeg进行RTMP(二)

在前面一节基于FFmpeg进行RTMP(一)我们写了最简单的一版代码。但细心调试过的兄弟会发现当我们把文件换成mp4后,发现上面的代码在写入文件头时报错。也就是说上一版的代码是有bug的。...说明我们的速度有问题。快了或慢了都会有问题。我们大概可以定位到,我们在计算延时的时候出现了错误。...test.mp4放到bin目录下即可 const char *inUrl = "hs.mp4"; //输出的地址 const char *outUrl = "rtmp://192.166.11.13...////////////////////////////////////////////////////////////////// // 准备...<< endl; //每一帧数据 //int64_t pts [ pts*(num/den) 第几秒显示] //int64_t dts 解码时间 [P帧(相对于上一帧的变化

8.4K50

rtmp异常快速恢复方案

紧急情况中,采取了断流迫使端重新,快速恢复了的稳定。 如上图所示,在21点47分左右,重新后,帧率稳定在30帧,卡顿率也恢复到正常水平。...2、RTMP 302重定向具体方案 为了解决流过程中,网络异常问题,采用了RTMP 302 重定向的方案,具体实现逻辑如下图所示: 步骤一,流过程中,rtmp server端支持持续弱网检测,支持域名...上述解决方案,在流过程中,通过RTMP 302的方式获取到服务器慢速信息,根据客户端以及服务器端慢速信息,来进行断流重,快速恢复直播,提高成功率。...对上述方案进行扩展,在开始时,利用302进行服务端的负载均衡。服务器端在刚收到客户端数据时,给客户端发送RTMP 302信息,来进行高负载302调度,提高的成功率。...3、结论 综上所述: 1、在流过程中,给客户端发送RTMP 302控制消息,客户端使用服务器提供的重定向地址,进行断流重,可以快速恢复异常,提升上行流质量; 2、在开始时,服务器端可以综合后台机器负载以及带宽资源情况

2.4K10

【Android RTMP】RTMPDump 流过程 ( 独立线程 | 创建器 | 初始化操作 | 设置地址 | 启用写出 | 连接 RTMP 服务器 | 发送 RTMP 数据包 )

文章目录 一、 Java 层传入的 RTMP 地址处理 二、 RTMPDump 流线程 三、 创建 RTMP 对象 四、 初始化 RTMP 对象 五、 设置 RTMP 地址 六、 启用 RTMP...独立线程 : RTMP 操作需要在一个独立的线程中完成 , 涉及到网络的操作都是耗时操作 , 在 Android 中都要在线程中执行 ; 2 ....初始化 RTMP RTMP_Init(rtmp); // 设置超时时间 5 秒 rtmp->Link.timeout = 5; 五、 设置 RTMP 地址 ---- 设置 RTMP 地址 , 如果设置失败...结束, 关闭与 RTMP 服务器连接, 释放资源 if(rtmp){ RTMP_Close(rtmp); RTMP_Free(rtmp); } 十一、 RTMPDump 代码 -...获取 Rtmp 地址 char* pushPath = static_cast(args); // rtmp RTMP* rtmp = 0;

2.3K20

排查rtmp协议时握手bug

概况 转流程序的过程:从一个观看地址拉,然后流到另一个地址。主要用于cdn之间转,目前市面上大多数cdn厂商都愿意不支持动态转,因此只能通过转流程序进行转。...中的代码是地址中没有加密串的情况下的握手过程代码,第二个链接handshake.h中的代码是地址中有加密串的情况下的握手过程代码。...抓包分析 以微赞和网宿为例 obs流网宿握手成功的包点此下载 obs微赞握手成功的包点此下载 网宿没有走加密流程,S2和C1匹配,具体数据包截图如下: ?...微赞流走加密流程,S2和C1不匹配,具体数据包截图如下: ? 到此,整个rtmp握手过程就比较清楚了。...至此,转成功,示例图如下: ? 结论 虽然Adobe公司自己出的rtmp协议不是iso标准的,但是你们这些公司好歹也尽量按照规定来啊,贼坑。

1.8K21
领券