From 447040110a940abad4ff8a5116d68ec0af5a47e1 Mon Sep 17 00:00:00 2001 From: Miroslav Pejic Date: Sun, 3 Oct 2021 17:11:19 +0200 Subject: [PATCH] [mirotalksfu] - add YouTube share video --- README.md | 1 + public/Room.html | 8 +++ public/css/Room.css | 14 +++++ public/images/youtube.png | Bin 0 -> 2481 bytes public/js/Room.js | 7 +++ public/js/RoomClient.js | 119 ++++++++++++++++++++++++++++++++++++++ public/landing.html | 4 +- src/Server.js | 11 +++- 8 files changed, 159 insertions(+), 5 deletions(-) create mode 100644 public/images/youtube.png diff --git a/README.md b/README.md index 367f07a4..fed88f5d 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ Powered by `WebRTC` with [SFU](https://mediasoup.org) integrated server. - Collaborative whiteboard for the teachers - Select Microphone - Speaker and Video source - Recording your Screen, Audio or Video +- Share any YouTube video in real time to your participants - Full Screen Mode on mouse click on the Video element - Supports [REST API](api/README.md) (Application Programming Interface) diff --git a/public/Room.html b/public/Room.html index cef512fc..8af0c6ea 100644 --- a/public/Room.html +++ b/public/Room.html @@ -139,6 +139,14 @@ access to use this app. + diff --git a/src/Server.js b/src/Server.js index 63ba2033..4ba49668 100644 --- a/src/Server.js +++ b/src/Server.js @@ -140,7 +140,7 @@ async function ngrokStart() { tunnel: tunnel, }); } catch (err) { - console.error('Ngrok Start error: ', err); + log.error('Ngrok Start error: ', err); process.exit(1); } } @@ -192,7 +192,7 @@ async function createWorkers() { rtcMaxPort: config.mediasoup.worker.rtcMaxPort, }); worker.on('died', () => { - console.error('Mediasoup worker died, exiting in 2 seconds... [pid:%d]', worker.pid); + log.error('Mediasoup worker died, exiting in 2 seconds... [pid:%d]', worker.pid); setTimeout(() => process.exit(1), 2000); }); workers.push(worker); @@ -265,6 +265,11 @@ io.on('connection', (socket) => { roomList.get(socket.room_id).broadCast(socket.id, 'fileAbort', data); }); + socket.on('youTubeAction', (data) => { + log.debug('YouTube: ', data); + roomList.get(socket.room_id).broadCast(socket.id, 'youTubeAction', data); + }); + socket.on('wbCanvasToJson', (data) => { // let objLength = bytesToSize(Object.keys(data).length); // log.debug('Send Whiteboard canvas JSON', { length: objLength }); @@ -328,7 +333,7 @@ io.on('connection', (socket) => { const { params } = await roomList.get(socket.room_id).createWebRtcTransport(socket.id); callback(params); } catch (err) { - console.error('Create WebRtc Transport error: ', err); + log.error('Create WebRtc Transport error: ', err); callback({ error: err.message, });