从服务器向客户端发送媒体流
Send Media Stream to Clients from Server
我需要使用 express 将 MediaStream 从 electron desktop Capture 发送到 Live HTML5 Video 标签。问题是我无法从媒体流创建 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')
});
})
如果你想要它 "live" 你需要在你的服务器上实现 WebRTC。
如果可以接受延迟,https://webrtc.github.io/samples/src/content/getusermedia/record/ 中显示的 MediaStreamRecorder API 可能会解决问题。您可以在 ondataavailable 处理程序中发送数据块。
我需要使用 express 将 MediaStream 从 electron desktop Capture 发送到 Live HTML5 Video 标签。问题是我无法从媒体流创建 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')
});
})
如果你想要它 "live" 你需要在你的服务器上实现 WebRTC。
如果可以接受延迟,https://webrtc.github.io/samples/src/content/getusermedia/record/ 中显示的 MediaStreamRecorder API 可能会解决问题。您可以在 ondataavailable 处理程序中发送数据块。