我一直在研究这个问题但很沮丧,因为我觉得解决方案应该很简单,尽管我知道不会.理想情况下,我只想使用node来托管服务器,webrtc getusermedia来获取本地客户端上的实时流,并使用类似socket.io的内容将流发送到服务器,然后服务器将流广播到远程服务器客户; 好像它是一个简单的消息聊天应用程序.
只是考虑一下这似乎是一种简单的方法,因为实时视频需要连续发送大量数据,这并不等于在事件发送后发送单个消息甚至文件(按下发送按钮) .
也许我错了,但是直播视频流应用程序是否可以遵循node/socket.io messenger app的相同结构?你会发送从getUserMedia返回的媒体对象,blob,一些二进制数据吗(我已经尝试了所有这些,但可能没有正确).
理想的目标是一个应用程序,根据需要使用尽可能少的额外绒毛,安装很少的npm,几乎没有额外的JavaScript库,或者很少担心编码/解码或者ICE或STUN到底是什么.有什么方法可以这样做,还是我要求太多?
理想的客户
var socket = io();
var local = document.getElementById("local_video");
var remote = document.getElementById("remote_video");
// display local video
navigator.mediaDevices.getUserMedia({video: true, audio: true}).then(function(stream) {
local.src = window.URL.createObjectURL(stream);
socket.emit("stream", stream);
}).catch(function(err){console.log(err);});
// displays remote video
socket.on("stream", function(stream){
remote.src = window.URL.createObjectURL(stream);
});
Run Code Online (Sandbox Code Playgroud)
理想服务器
var app = require("express")();
var http = require("http").Server(app);
var fs = require("fs");
var io = require("socket.io")(http);
app.get('/', onRequest);
http.listen(process.env.PORT || 3000, function() {
console.log('server started');
})
//404 response …Run Code Online (Sandbox Code Playgroud)