Node.js 当添加更多WebRTC对等点时,CPU使用率变得更高?

Node.js 当添加更多WebRTC对等点时,CPU使用率变得更高?,node.js,electron,webrtc,peerjs,Node.js,Electron,Webrtc,Peerjs,我正在用一个电子应用程序从服务器上传视频/音频,以获取桌面。当一个用户连接时,两个内核上的CPU使用率为30-50%。随着越来越多的用户加入,使用率越来越高,当有~6个用户时,内核和视频质量都保持100%不变,并且视频质量变得滞后和差 这就像是为每个加入的用户编码视频一样?我怎样才能让它编码一次并将该流发送给每个人?这是我唯一的猜测,为什么cpu使用率会变得如此之高,也许我错了。谢谢你能给予的任何帮助!我也愿意采用其他方法,因为只有服务器需要发送视频 获取视频和音频: function getA

我正在用一个电子应用程序从服务器上传视频/音频,以获取桌面。当一个用户连接时,两个内核上的CPU使用率为30-50%。随着越来越多的用户加入,使用率越来越高,当有~6个用户时,内核和视频质量都保持100%不变,并且视频质量变得滞后和差

这就像是为每个加入的用户编码视频一样?我怎样才能让它编码一次并将该流发送给每个人?这是我唯一的猜测,为什么cpu使用率会变得如此之高,也许我错了。谢谢你能给予的任何帮助!我也愿意采用其他方法,因为只有服务器需要发送视频

获取视频和音频:

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);
    })
});