Отправка медиа-потока клиентам с сервера - PullRequest
0 голосов
/ 29 апреля 2018

Мне нужно отправить MediaStream из электронного рабочего стола Capture в тег Live HTML5 Video с помощью Express. Проблема в том, что я не могу создать fs.createReadStream из медиапотока. Я не думаю, что мне нужно использовать WEB-RTC для этого. Код ниже

app.js

var fs = require('fs');
var path = require('path');
var express = require('express');
var app = express();
const {desktopCapturer} = require('electron');
function getDesktop(callback) {
    desktopCapturer.getSources({types: ['window', 'screen']}, 
function(error, sources) {
        if (error) return callback(error)
        navigator.mediaDevices.getUserMedia({
            audio: false,
            video: {
                mandatory: {
                    chromeMediaSource: 'desktop',
                    chromeMediaSourceId: sources[0].id,
                    minWidth: 1280,
                    maxWidth: 1280,
                    minHeight: 720,
                    maxHeight: 720
                }
            }
        }).then(function(stream) {
            return callback(null,stream)
            video.onloadedmetadata = (e) => video.play()
        }).catch(function(e) {
            return callback(e);
        })
    })
}
getDesktop(function(err,stream) {
    app.get('/',function(req,res) {
        return res.sendFile(path.join(__dirname + '/client/client.html'))
    });
    app.get('/video',function(req,res) {

            ///Send LIVE data to HTML5 Video Tag


    });
    app.listen(80,function() {
        console.log('Streaming')
    });
})

1 Ответ

0 голосов
/ 29 апреля 2018

Если вы хотите, чтобы он был "живым", вам нужно внедрить WebRTC на вашем сервере.

Если задержка приемлема, API MediaStreamRecorder, показанный в https://webrtc.github.io/samples/src/content/getusermedia/record/, может решить проблему. Вы можете отправлять порции данных в обработчик ondataavailable.

...