【问题标题】:How to set-up node-media-server with rtmp on DO Droplet如何在 DO Droplet 上使用 rtmp 设置节点媒体服务器
【发布时间】:2021-09-08 00:11:03
【问题描述】:

以下所有文件

我无法在数字海洋水滴上托管我的 RTMP 服务器。 我有 2 个节点应用程序,1 只是一个用 Hapi.js 编写的 API,在 8000 端口上运行

第二个是在端口 8888 和 1935 上运行的用于 RTMP 的节点媒体服务器应用程序,我已将其集成为 Hapi.js 插件,但它们作为单独的进程运行。 我使用 Nginx 作为反向代理将请求传递给节点应用程序,一切正常。 node-media-server 提供的所有端点都可以工作。

但我想不出一种方法来访问我的节点媒体服务器的 1935 端口并向其发送 RTMP 流。

在本地主机上,我使用像 rtmp://localhost:1935/live/{stream_key} 这样的 OBS,但同样不适用于托管应用程序。

请告诉我一种将流从我的 OBS 接收到服务器的方法。

也许我可以使用 ngix-rtmp 模块来接收流并将其推送到服务器上的节点媒体服务器应用程序...

/etc/nginx/sites-available/default

upstream media {
   server 127.0.0.1:8888;
}


upstream main {
   server 127.0.0.1:8000;
}

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html/challenger;

    index index.html index.htm index.nginx-debian.html;

    server_name hellonode;

    location ^~ /assets/ {
        gzip_static on;
        expires 12h;
        add_header Cache-Control public;
  }

        location /main/  {
            proxy_pass          http://localhost:8000/;
            #proxy_http_version  1.1;
            #proxy_set_header    Host                $http_host;
            #proxy_set_header    Upgrade             $http_upgrade;
            #proxy_set_header    Connection          "Upgrade";
            #proxy_set_header    X-Real-IP           $proxy_protocol_addr;
            #proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
            #proxy_set_header    X-Forwarded-Proto   tcp;
            #proxy_set_header    X-NginX-Proxy       true;
        }

    location / {
        proxy_http_version 1.1;
        proxy_cache_bypass $http_upgrade;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_pass http://media;
    }
}

还有 node-media-server 应用程序(用作 Hapi.js 插件,在 manifest.js 中调用

"use strict";

const { getStreamKeyFromStreamPath } = require("../app/services/live.service");

const NodeMediaServer = require("node-media-server");

const ffmpegPath = require("@ffmpeg-installer/ffmpeg").path;

const connect = {
  name: "live",
  pkg: require("../../package"),
  async register(server, options) {
    const config = {
      logType: 3,
      rtmp: {
        port: 1935,
        chunk_size: 60000,
        gop_cache: true,
        ping: 30,
        ping_timeout: 60,
      },
      http: {
        port: process.env.MEDIA_SERVER_PORT || 8888,
        mediaroot: "./media",
        allow_origin: "*",
      },
      trans: {
        //   ffmpeg: "../../../ffmpeg/bin/ffmpeg.exe",
        ffmpeg: ffmpegPath,
        tasks: [
          {
            app: "live",
            hls: true,
            hlsFlags: "[hls_time=2:hls_list_size=3:hls_flags=delete_segments]",
            mp4: true,
            mp4Flags: "[movflags=frag_keyframe+empty_moov]",
          },
        ],
      },
    };

    const nms = new NodeMediaServer(config);

    nms.on("prePublish", async (id, StreamPath, args) => {
      let stream_key = getStreamKeyFromStreamPath(StreamPath);
      console.log(
        "[NodeEvent on prePublish]",
        `id=${id} StreamPath=${StreamPath} args=${JSON.stringify(args)}`
      );
    });

    nms.run();
  },
};

module.exports = connect;

【问题讨论】:

    标签: node.js digital-ocean rtmp node-media-server


    【解决方案1】:

    经过一番研究,我得到了解决方案。

    解决方案非常明显

    因此 node-media-server 应用程序在端口 1935 上侦听 RTMP。因此,自然的解决方案是创建和配置防火墙,允许通过端口 1935 进行 TCP 连接。对于 Ubuntu 18.0 Droplet,以下方法可以解决问题。

    首先,使用lsof -i :1935 找到您的端口,然后通过sudo ufw allow 1935/tcp 的端口允许TCP 连接。因此,如果节点媒体服务器正在运行,恭喜!您现在可以像这样使用 OBS rtmp://your_ip:1935/live/stream_key

    请注意:注意您的应用运行所在的主机。对我来说 localhost 有效,但有一些 Droplet 配置您可能需要将其设置为 0.0.0.0

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多