簡體   English   中英

如何使用 socket.io-stream 進行實時視頻/音頻流

[英]How to use socket.io-stream for live video/audio streaming

我正在嘗試制作一個實時 P2P 視頻聊天應用程序。

我發現使用 socket.io-stream 庫會有所幫助。 但我不知道如何實現這個庫。

不過,我的視頻播放器在客戶端運行良好。 我只想使用 socket.io 將此 stream 傳輸到其他連接的客戶端。

我的服務器代碼如下

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>

我再說一遍,我的問題是 stream 視頻通過 socket.io 使用 socket.io-stream(如果有任何其他替代方案很好)

到目前為止,我的 GitHub 代碼鏈接在這里

我希望我的查詢很容易理解。

我正在嘗試制作一個實時 P2P 視頻聊天應用程序。

這是錯誤的技術。 您需要使用 WebRTC 來確保實時流,並建立對等連接。

我發現使用 socket.io-stream 庫會有所幫助。

不,不會的。 術語“流”在這里超載......您所指的 NPM 模塊是用於管道數據的 Stream API 模塊。 您從媒體設備 API 獲得的“流”是一個媒體流……與流 API 完全無關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM