Note:
This article is also available here.(Japanese)
https://qiita.com/wok/items/205c086f19a7ff73718d
Introduction
Zoom has begun offering an SDK. It’s a lot of excitement. I took the opportunity to experiment with this and will be posting several in a row, as it looked like it could do a lot of interesting things. Please see subsequent posts if you are interested.
Related articles are
(1) Time keeper bot with Zoom Meeting SDK ←This article
(2) Talking avatar with Zoom Meeting SDK
(3) Motion tracking avatar with Zoom Meeting SDK
(4) Voice changer with Zoom Meeting SDK
(5) Use avatar you like in Zoom !
(6) Real-time transcription of Zoom meetings with Zoom Meeting SDK and Vosk browser
In this article, I would like to create a timekeeper in Zoom for starters.
It works like this.
https://www.youtube.com/embed/Zgag--JC2sM
For now, we have it as a Docker image, so you can download and use it.
$ docker run -p 8888:8888 dannadori/zoom-meeting-plus:v01
Access with browser http://localhost:8888/
The operation is as follows.
Zoom SDK
Zoom offers a Meeting SDK and a Video SDK.
The Video SDK seems to allow for quite a bit of freedom in customizing the UI/UX. However, it does not seem to allow users to participate in regular Zoom meetings. So my understanding is that it is used when creating a completely independent communication application using Zoom’s backend.
The Meeting SDK, on the other hand, is a handy way to create an app using the UI components of the official app provided by Zoom. You can also participate in regular Zoom meetings. So, we understand that it can be used to add a little extra help to regular Zoom videoconferencing.
This time, I decided to use the Meeting SDK because I don’t think my design sense can exceed the UI/UX provided by Zoom in the first place, and I think that an application that allows users to participate in regular Zoom meetings would be more likely to be used. If I have time later, I will try to touch the Video SDK as well.
Architecture
The Timekeeper function joins the Zoom conference as a Bot. This is a bit tricky, but when Zoom gets the video and audio streams (getUserMedia), it passes a MediaStream to Zoom’s SDK to stream the bot’s video and audio. At this time, it would be a good idea to create an AudioNode using WebAudioAPI and pass its stream (track) to Zoom so that the audio can be played later. Then, when the specified time is reached, the audio of the end time is played to that node. In this case, the system can also notify 1 minute, 3 minutes, and 5 minutes before the end of the session.
Repository
The demo shown here is available in the following repositories
https://github.com/w-okada/zoom-meeting-plus
The latest version may not be stable as we are constantly updating it.
Please clone and use the following tag.
$ git clone https://github.com/w-okada/zoom-meeting-plus -b v01
Disclaimer
In no event shall we be liable for any direct, indirect, consequential, or special damages arising out of the use or inability to use the software on this blog.