【问题标题】:Push local WebRTC stream to a NodeJS server in the cloud将本地 WebRTC 流推送到云端的 NodeJS 服务器
【发布时间】:2022-01-12 13:03:57
【问题描述】:

我有一个任务,但我似乎无法完成它。 我在 Raspberry Pi 上创建了一个非常简单的 WebRTC 流,它将用作视频聊天摄像头。 使用 ionic,我制作了一个简单的移动应用程序,当手机连接到同一网络时,它可以显示我的 WebRTC 流。这一切都有效。

所以现在我有自己的本地流,它显示在我的应用程序上。 我现在希望能够将此流从我的手机广播到实时服务器,以便其他人可以观看。

我知道如何创建一个 NodeJS 服务器,它使用“getUserMedia”功能部署我的网络摄像头。但我想将我的 WebRTC 流“推送”到实时服务器,以便检索它的公共 URL。

有没有办法将我的本地 Websocket 推送到实时环境? 我正在使用本地 RTCPeerConnection 创建 MediaStream 对象

this.peerconnection = new RTCPeerConnection(this.peerservers);
    this.peerconnection.onicecandidate = (event) => {
      if (event.candidate && event.candidate.candidate) {
        var candidate = {
          sdpMLineIndex: event.candidate.sdpMLineIndex,
          sdpMid: event.candidate.sdpMid,
          candidate: event.candidate.candidate
        };
        var request = {
          what: "addIceCandidate",
          data: JSON.stringify(candidate)
        };
        this.websockets.send(JSON.stringify(request));
      } else {
        console.log("End of candidates.");
      }
    };

并将流对象绑定到我正在使用的 HTML 视频标签

onTrack(event) {
    this.remoteVideo.srcObject = event.streams[0];
  }

我的流网址类似于:MyLocalIP:port/streams/webrtc 所以我想用它创建一个公共 URL 来广播它。

【问题讨论】:

    标签: node.js ionic-framework websocket webrtc rtcpeerconnection


    【解决方案1】:

    有没有办法将我的本地 Websocket 推送到实时环境?

    这并不简单,因为您需要的不仅仅是普通的 webrtc(点对点)。你想要的是SFU。看看mediasoup

    要了解为什么需要这样做,请考虑如何在当前应用中建立 webrtc 连接。这是方之间的协商(由信令服务器促成)。为了将其转变为多播设置,您将需要某种代理,然后与所有发送者和接收者建立单独的对等连接。

    【讨论】:

    • 好的,这对我来说很清楚,但我不知道从哪里开始。有什么方法可以帮助我将我的 ws:// websocket URL 转发到远程服务器?我们可以付钱(不知道我是否可以在这里做出这样的回应),但我很想完成这项工作!
    • 我愿意谈论这个。您可以通过电子邮件/linkedin 联系我吗?我的个人资料中的信息。
    【解决方案2】:

    您可以使用 Socket.io 和 WebRTC 来实现,请参阅 sample here

    var offerer = new PeerConnection('http://domain:port', 'message', 'offerer');
    offerer.onStreamAdded = function(e) {
       document.body.appendChild(e.mediaElement);
    };
    var answerer = new PeerConnection('http://domain:port', 'message', 'answerer');
    answerer.onStreamAdded = function(e) {
       document.body.appendChild(e.mediaElement);
    };
    answerer.sendParticipationRequest('offerer');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-29
      • 1970-01-01
      • 1970-01-01
      • 2018-03-08
      • 2014-09-28
      • 1970-01-01
      • 2021-12-06
      • 1970-01-01
      相关资源
      最近更新 更多