Node.js 当添加更多WebRTC对等点时,CPU使用率变得更高?
我正在用一个电子应用程序从服务器上传视频/音频,以获取桌面。当一个用户连接时,两个内核上的CPU使用率为30-50%。随着越来越多的用户加入,使用率越来越高,当有~6个用户时,内核和视频质量都保持100%不变,并且视频质量变得滞后和差 这就像是为每个加入的用户编码视频一样?我怎样才能让它编码一次并将该流发送给每个人?这是我唯一的猜测,为什么cpu使用率会变得如此之高,也许我错了。谢谢你能给予的任何帮助!我也愿意采用其他方法,因为只有服务器需要发送视频 获取视频和音频:Node.js 当添加更多WebRTC对等点时,CPU使用率变得更高?,node.js,electron,webrtc,peerjs,Node.js,Electron,Webrtc,Peerjs,我正在用一个电子应用程序从服务器上传视频/音频,以获取桌面。当一个用户连接时,两个内核上的CPU使用率为30-50%。随着越来越多的用户加入,使用率越来越高,当有~6个用户时,内核和视频质量都保持100%不变,并且视频质量变得滞后和差 这就像是为每个加入的用户编码视频一样?我怎样才能让它编码一次并将该流发送给每个人?这是我唯一的猜测,为什么cpu使用率会变得如此之高,也许我错了。谢谢你能给予的任何帮助!我也愿意采用其他方法,因为只有服务器需要发送视频 获取视频和音频: function getA
function getAudio(audioID){
navigator.mediaDevices.getUserMedia( { video: false, audio: {deviceId: {exact: audioID},
autoGainControl: false, channelCount: 2, echoCancellation: false, noiseSuppression: false, sampleRate: 44100, sampleSize: 16 } } )
.then(function(stream) {
console.log("audio got??");
var audio = stream.getAudioTracks()[0];
mediaStream.addTrack(audio);
})
.catch(function(err) {
console.log(err.message);
});
}
desktopCapturer.getSources({ types: ['screen'] })
.then(async sources => {
console.log(sources);
let constraints2 = {
audio: false,
video: {
mandatory: {
chromeMediaSource: 'desktop',
maxWidth: 1280,
maxHeight: 720
}
}
}
let constraints3 = {
frameRate: {max: 24}
}
navigator.mediaDevices.getUserMedia(constraints2)
.then(function(stream){
mediaStream = stream;
let track = stream.getVideoTracks()[0];
track.applyConstraints(constraints3);
setTimeout(function(){
getAudio(audioID, 0);
}, 2000);
})
.catch(console.error);
})
.catch(console.error);
调用加入的对等方:
peer = new Peer(myPeerID, {host: 'selfhostedpeerjs.com', port: 9000, path: '/', key: 'peerjs', config: {'iceServers': [{ url: 'stun:stun.l.google.com:19302' },
{url:'stun:stun1.l.google.com:19302'},
{url:'stun:stun2.l.google.com:19302'},
{url:'stun:stun3.l.google.com:19302'},
{url:'stun:stun4.l.google.com:19302'}
]}
});
peer.on('open', function(id){
console.log("My peer id is: " + id);
});
peer.on('connection', function(conn)
{
conn.on('open', function(){
console.log("connection opened");
var id = conn.peer;
//conn.send('Hello!');
console.log("Trying to call now");
var call = peer.call(id, mediaStream);
call.on('error', function(err){
console.log('calling error');
console.log(err);
})
});