将本地WebRTC流推送到云中的NodeJS服务器



我有一项任务,但似乎无法完成。我在树莓派上创建了一个非常简单的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];
}

我的流url类似于:MyLocalIP:port/streams/webrtc所以我想从中创建一个公共URL来广播它

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

这并不简单,因为你需要的不仅仅是普通的webrtc(对等(。你想要的是SFU。看看媒体汤。

要了解为什么需要这样做,请思考如何在当前应用程序中建立webrtc连接。这是两个方之间的协商(由信令服务器提供便利(。为了将其转换为多播设置,您需要一个代理,然后建立与所有发送方和接收方的单独对等连接。

您可以使用Socket.io&WebRTC,请参阅此处的示例

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');

相关内容

  • 没有找到相关文章

最新更新