A Windows C++ Application demonstrate Zoom Meeting SDK receiving Local Recording from a Zoom Meeting, containerized on Windows platform.
The other popular use-case for this sample app is to save local recording, and upload it into an S3 bucket.
In MSDK_LocalRecording.cpp, look for while (!encoderEnded) . This is the part where you can use AWS CLI to upload the mp4 file into your S3 bucket using CLI.
Note:
- Windows containers needs to run on Windows based docker host
- This sample runs with full GUI. While strictly speaking there is no GUI on Windows based docker container, GUI apps are supported.
- This sample is a community best effort and does not guarantee that Meeting SDK is supported on docker environment.
- The dockerfile? Yeah it could definately be better optimized. If you able able to optimize it, do a pull request.
You might need to use Powershell (as administrator) or Windows Terminal to execute the sh script files
cd ~
cd source
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install --vcpkg-root c:\vcpkg
./vcpkg install jsoncpp
./vcpkg install curl
Please be aware that all hard-coded variables and constants shown in the documentation and in the demo, such as Zoom Token, Zoom Access, Token, etc., are ONLY FOR DEMO AND TESTING PURPOSES. We STRONGLY DISCOURAGE the way of HARDCODING any Zoom Credentials (username, password, API Keys & secrets, SDK keys & secrets, etc.) or any Personal Identifiable Information (PII) inside your application. WE DON’T MAKE ANY COMMITMENTS ABOUT ANY LOSS CAUSED BY HARD-CODING CREDENTIALS OR SENSITIVE INFORMATION INSIDE YOUR APP WHEN DEVELOPING WITH ZOOM SDK.
{
"sdk_jwt": "<your_sdk_jwt>",
"meeting_number": <meeting_number_to_join>,
"passcode": "<passcode>",
"video_source": "test",
"zak":""
}
The app will try to join the meeting follow the Meeting Number you specified in the config.json.
You will need to download the Windows Meeting SDK C++ SDK from marketplace.zoom.us and place the SDK files into the SDK folder in this project. The directory should look something like this
- x64 (folder)
- bin
- h
- lib
- x86 (folder)
- bin
- h
- lib
- CHANGELOG.md
- OSS-LICENSE.html
- README.md
- version.txt
Open "MSDK_LocalRecording.vcxproj" file from Visual Studio 2022.
Hit F5 or click from menu "Debug" -> "Start Debugging" in x86 or x64 to launch the application.
if you are getting an error about not being able to open source json/json.h , include this in your
Visual Studio Project -> Properties. Under C/C++ ->General ->Additional Include Directories,
C:\yourpath\whereyouinstalled\vcpkg\packages\jsoncpp_x64-windows\include
or
C:\yourpath\whereyouinstalled\vcpkg\packages\jsoncpp_x86-windows\include
what if i would like to use x64 environment?
add this to your environment variable before installing openCV from vcpkg
VCPKG_DEFAULT_TRIPLET = x64-windows
you can use setx VCPKG_DEFAULT_TRIPLET "x64-windows" to set it via command line
and reinstall by using the command below
./vcpkg install jsoncpp
The main method, or main entry point of this application is at MSDK_LocalRecording.cpp
From a high level point of view it will do the below
- Join a meeting
- Wait for callback or status update. There are some prerequistes before you can get video raw data. The
CanIStartRecording()method helps to check if you have fulfilled these requirements- You need to have host, co-host or recording permissions
- You need to be in-meeting. This is the status when you have fully joined a meeting.
- Get the Meeting Recording Controller
- Use the Meeting Recording Controller to call
StartRecording(). Do note that you can only either runStartRecording()orStartRawRecording(). You cannot run them both at once.
- Use the Meeting Recording Controller to call
- The files are stored in your user direct /Documents/Zoom
- When the meeting ends or when the SDK exits the meeting, it is automatically converted
- After convertion the loop
while (!encoderEnded)will execute- This is the part where you can run your own custom commands, such as using AWS CLI to authenticate and upload an mp4 blob into S3 Storage.
- You will need to write this logic yourself
You will need to download the latest Meeting SDK Windows for c++ from marketplace.zoom.us
Replace the files in the folder SDK with those found in the downloaded files from marketplace.zoom.us
You will need to ensure any missing abstract classes are implemented etc... before you can compile and upgrade to a newer SDK version.
This project makes use of the following third-party libraries:
- curl by Daniel Stenberg and contributors. curl GitHub repository.
- jsoncpp by Baptiste Lepilleur and contributors. jsoncpp GitHub repository.
Please see the LICENSE file for more information.