@ joshy.poo Я изменил свой ответ. Да, чанк означает пакет данных, Stream API предоставляет конвейерный механизм для выполнения того же самого. Я не использовал socket.io для потокового видео, поэтому не могу помочь с реализацией!

го исследовал это, но разочарован, так как чувствую, что это решениедолжно быть просто, хотя я знаю, что не будет. В идеале я бы просто хотел использовать узел для размещения сервера, webrtc getusermedia, чтобы получить живой поток на локальном клиенте, и использовать что-то вроде socket.io для отправки потока на сервер, а затем сервер будет транслировать поток на удаленный клиент; как будто это было простое приложение для обмена сообщениями.

Если подумать об этом еще немного, кажется, что такой простой подход был бы невозможен, потому что живое видео требует непрерывной отправки большого количества данных, что не равнозначно отправке одного сообщения или даже файла после события (нажатие кнопки отправки). ,

Может быть, я ошибаюсь, может ли приложение для потокового видео следовать той же структуре, что и приложение для обмена сообщениями node / socket.io? Вы бы отправили объект мультимедиа, возвращенный из 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);

    });

Идеальный сервер

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
function send404(response) {
    response.writeHead(404, {"Content-Type" : "text/plain"});
    response.write("Error 404: Page not found");
    response.end();
}

function onRequest(request, response) {
  if(request.method == 'GET' && request.url == '/') {
    response.writeHead(200, {"Content-Type" : "text/html"});
    fs.createReadStream("./index.html").pipe(response);
  } else {
    send404(response);
  }
}

io.on('connection', function(socket) {
  console.log("a user connected");
  socket.on('stream', function(stream) {
    socket.broadcast.emit("stream", stream);
  });
  socket.on('disconnect', function () {
    console.log("user disconnected");
  });
});

Это сломанное приложение в действии:https://nodejs-videochat.herokuapp.com/

Это неработающий код на github:https://github.com/joshydotpoo/nodejs-videochat

Ответы на вопрос(1)

Ваш ответ на вопрос