Electron如何实现webrtc桌面共享和音视频通话及P2p文件传输?
网友回复
Electron使用的chrome作为渲染,所有也是支持chrome的webrtc方法的,所以写法是一样的。
//获取electron和remote模块 const electron = require('electron'); const remote = electron.remote; //获取屏幕视频源 let screenSources = remote.desktopCapturer.getSources({types: ['screen']}); //选择视频源并获取视频流 let screenStream = await navigator.mediaDevices.getUserMedia({ audio: false, video: { mandatory: { chromeMediaSource: 'desktop', chromeMediaSourceId: screenSources[0].id } } }); //创建RTCPeerConnection let pc = new RTCPeerConnection(); //发布本地流 pc.addTrack(screenStream.getVideoTracks()[0], screenStream); //处理ICE候选地址收集 pc.onicecandidate = (e) => {/.../}; //接收远程流 pc.onaddstream = (e) => { let remoteScreen = document.querySelector('#remote-screen'); remoteScreen.srcObject = e.stream; }; //创建RTCDataChannel并发送文件 let dc = pc.createDataChannel('fileChannel'); dc.onmessage = (e) => {/接收文件/}; dc.send(file); //注册自定义协议 remote.app.setAsDefaultProtocolClient('electron-webrtc'); //创建菜单和托盘等UI let menu = new Menu(); let tray = new Tray('/path/to/icon.png'); //打包应用 electron-packager . --platform=win32 --arch=x64 --electron-version=9.0.0