如何使用 socket.io-stream 进行直播 video/audio 流式传输
How to use socket.io-stream for live video/audio streaming
我正在尝试制作一个实时 P2P 视频聊天应用程序。
我发现使用 socket.io-stream 库会有帮助。
但是我不知道如何实现 this 库。
虽然我的视频播放器在客户端运行良好。我只想使用 socket.io.
将此流传输到其他连接的客户端
我的服务器代码如下
let app = require("express")();
let ss = require("socket.io-stream");
let http = require("http").createServer(app);
const routes = require("./routes");
let io = require("socket.io")(http);
routes(app, __dirname);
http.listen(3000, () => {
console.log("app listening on port ", 3000);
});
io.sockets.on("connection", (socket) => {
socket.on("joinRoom", (obj) => {
let { name, stream } = obj;
console.log(name, stream);
});
});
我的客户端脚本如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Video Calling</title>
</head>
<body>
<video autoplay="true" id="video"></video>
<script src="/socket.io/socket.io.js"></script>
<script>
const socket = io();
let name = prompt("Enter the room name");
function wrongname() {
name = prompt("Seriously? That's not a name! enter again!");
validator();
}
function validator() {
if (!name.match(/^[0-9a-z]+$/)) {
wrongname();
} else {
return true;
}
}
validator();
let video = document.getElementById('video');
if (navigator.mediaDevices.getUserMedia) {
navigator.mediaDevices.getUserMedia({
video: true,
audio: true
})
.then((stream) => {
video.srcObject = stream;
console.log(stream);
socket.emit("joinRoom", {
name: name,
stream: stream
});
})
.catch((error) => {
alert("You choose to turn off your video and audio");
location.replace('/');
})
}
</script>
</body>
</html>
我再说一遍,我的问题是使用 socket.io-stream 通过 socket.io 流式传输视频(如果有任何其他选择就可以)
到目前为止,我使用 GitHub link 的代码是 here
我希望我的查询很容易理解。
I am trying to make a real time P2P video chat application.
这是错误的技术。您需要使用 WebRTC 来确保实时流,并建立点对点连接。
I found out that using socket.io-stream library would help.
不,不会。术语“流”在这里超载了……您所指的 NPM 模块是用于管道数据的 Stream API。您从媒体设备 API 获得的“流”是一个 MediaStream... 与流 API.
完全无关
我正在尝试制作一个实时 P2P 视频聊天应用程序。
我发现使用 socket.io-stream 库会有帮助。 但是我不知道如何实现 this 库。
虽然我的视频播放器在客户端运行良好。我只想使用 socket.io.
将此流传输到其他连接的客户端我的服务器代码如下
let app = require("express")();
let ss = require("socket.io-stream");
let http = require("http").createServer(app);
const routes = require("./routes");
let io = require("socket.io")(http);
routes(app, __dirname);
http.listen(3000, () => {
console.log("app listening on port ", 3000);
});
io.sockets.on("connection", (socket) => {
socket.on("joinRoom", (obj) => {
let { name, stream } = obj;
console.log(name, stream);
});
});
我的客户端脚本如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Video Calling</title>
</head>
<body>
<video autoplay="true" id="video"></video>
<script src="/socket.io/socket.io.js"></script>
<script>
const socket = io();
let name = prompt("Enter the room name");
function wrongname() {
name = prompt("Seriously? That's not a name! enter again!");
validator();
}
function validator() {
if (!name.match(/^[0-9a-z]+$/)) {
wrongname();
} else {
return true;
}
}
validator();
let video = document.getElementById('video');
if (navigator.mediaDevices.getUserMedia) {
navigator.mediaDevices.getUserMedia({
video: true,
audio: true
})
.then((stream) => {
video.srcObject = stream;
console.log(stream);
socket.emit("joinRoom", {
name: name,
stream: stream
});
})
.catch((error) => {
alert("You choose to turn off your video and audio");
location.replace('/');
})
}
</script>
</body>
</html>
我再说一遍,我的问题是使用 socket.io-stream 通过 socket.io 流式传输视频(如果有任何其他选择就可以)
到目前为止,我使用 GitHub link 的代码是 here
我希望我的查询很容易理解。
I am trying to make a real time P2P video chat application.
这是错误的技术。您需要使用 WebRTC 来确保实时流,并建立点对点连接。
I found out that using socket.io-stream library would help.
不,不会。术语“流”在这里超载了……您所指的 NPM 模块是用于管道数据的 Stream API。您从媒体设备 API 获得的“流”是一个 MediaStream... 与流 API.
完全无关