The is a sample app for Zoom Meeting SDK Linux. It demonstrates access to raw audio and raw video in a headless docker environment.
1 Please decompress the downloaded zoom-meeting-sdk-linux_x86_64-5.xx.x.xxxx.tar
and copy the files in the decompressed folder to these sample-app folders
h
to demo/include/h
qt_libs
to demo/lib/zoom_meeting_sdk/qt_libs
lib******.so
files to demo/lib/zoom_meeting_sdk/lib******.so
translation.json
to demo/lib/zoom_meeting_sdk/json
libmeetingsdk.so
to libmeetingsdk.so.1
within demo/lib/zoom_meeting_sdk/
. You can use the command ln -s libmeetingsdk.so libmeetingsdk.so.1
to do so.2 Execute cmake -B build
in demo/ folder . After successfulcmake
, the demo/build/
folder will be generated.
3 Execute make
in the /demo/build/
directory to compile
GetVideoRawData
, GetAudioRawData
, SendVideoRawData
, SendAudioRawData
are boolean control variables. You can search for them in the sample code to understand the flow.
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 OUR SDK.
meeting_number: "1234567890"
token: "xxxxxxxx.yyyyyyyyyyyyyyyyyy.zzzzzzzzzzzzzzzzz"
meeting_password: "123456"
recording_token: ""
GetVideoRawData: "true"
GetAudioRawData: "true"
SendVideoRawData: "false"
SendAudioRawData: "false"
withoutloginParam.userName = "";
in meeting_sdk_demo.cpp
. meeting_sdk_demo.cpp
is the starting point of the demo app.~\.config.us\zoomus.conf
before you can access raw audio in an environment without soundcard, such as docker and WSL environment. The sample zoomus.conf file is generated in the setup-pulseaudio.sh
filesturnOnSendVideoAndAudio
and turnOnSendVideoAndAudio
) which you will need to call
If you have additional cpp and/or .h files, you might need to be included in this CMakeLists.txt
add_executable(meetingSDKDemo
${CMAKE_SOURCE_DIR}/meeting_sdk_demo.cpp
${CMAKE_SOURCE_DIR}/init_auth_sdk_workflow.cpp
${CMAKE_SOURCE_DIR}/meeting_sdk_util.cpp
${CMAKE_SOURCE_DIR}/init_auth_sdk_workflow.h
${CMAKE_SOURCE_DIR}/meeting_sdk_util.h
${CMAKE_SOURCE_DIR}/RegressionTestRawdataRender.cpp
${CMAKE_SOURCE_DIR}/RegressionTestRawdataRender.h
${CMAKE_SOURCE_DIR}/custom_ui_eventSink.h
${CMAKE_SOURCE_DIR}/custom_ui_eventSink.cpp
${CMAKE_SOURCE_DIR}/MeetingReminderEventListener.h
${CMAKE_SOURCE_DIR}/MeetingReminderEventListener.cpp
)
Similarly for libraries
target_link_libraries(meetingSDKDemo gcc_s gcc)
target_link_libraries(meetingSDKDemo meetingsdk)
target_link_libraries(meetingSDKDemo glib-2.0)
target_link_libraries(meetingSDKDemo pthread)
The sample app has been tested on Centos 8, Centos 9, Ubuntu 22 and Ubuntu 23. Here are some dependencies you will need to include.
This is tested on WSL and Docker centos 9 and Centos 8 Here are some dependencies to get it to run on Centos. Some packages might be redundant, and has not been optimized.
sudo yum install cmake
sudo yum install gcc gcc-c++
sudo dnf config-manager --set-enabled crb
sudo dnf install epel-release epel-next-release
yum install -y openssl-devel
yum install -y libcurl-devel
yum install -y pulseaudio pulseaudio-utils
sudo yum -y install SDL2-devel
sudo yum install libxcb-devel
sudo yum install xcb-util-devel
sudo yum install xcb-util-image
sudo yum install xcb-util-keysyms
sudo yum install mesa-libGL
sudo yum install mesa-libGL-devel
sudo yum install mesa-dri-drivers
==============================================================
This is tested on WSL and Docker Ubuntu 22 and 23 Here are some dependencies to get it to run on Ubuntu. Some packages might be redundant, and has not been optimized.
apt-get update && apt-get install -y build-essential cmake
apt-get install -y --no-install-recommends --no-install-suggests \
libx11-xcb1 \
libxcb-xfixes0 \
libxcb-shape0 \
libxcb-shm0 \
libxcb-randr0 \
libxcb-randr0 \
libxcb-image0 \
libxcb-keysyms1 \
libxcb-xtest0
apt-get install -y --no-install-recommends --no-install-suggests \
libdbus-1-3 \
libglib2.0-0 \
libgbm1 \
libxfixes3 \
libgl1 \
libdrm2 \
libgssapi-krb5-2
apt-get install libcurl4-openssl-dev \
openssl \
ca-certificates \
pkg-config
apt-get install -y pulseaudio pulseaudio-utils
apt-get install libegl-mesa0 libsdl2-dev g++-multilib
Additional file in ~/.config/zoomus.conf
[General] system.audio.type=default
Dockerfile targetting different distros are provided in this sample app as well (Dockerfile-centos, Dockerfile-Ubuntu .....) Currently this is tested on
docker build -t msdk-6.0.2-on-centos8-compact -f Dockerfile-Centos8/Dockerfile . docker run -it --rm msdk-6.0.2-on-centos8-compact
docker build -t msdk-6.0.2-on-centos9-compact -f Dockerfile-Centos9/Dockerfile . docker run -it --rm msdk-6.0.2-on-centos9-compact
docker build -t msdk-6.0.2-on-ubuntu-compact -f Dockerfile-Ubuntu/Dockerfile . docker run -it --rm msdk-6.0.2-on-ubuntu-compact
docker build -t msdk-6.0.2-on-oraclelinux8-compact -f Dockerfile-ol8/Dockerfile . docker run -it --rm msdk-6.0.2-on-oraclelinux8-compact
The configuration for pulseaudio has been provided for you as shell scripts.
The setup is done via setup-pulseaudio.sh
and setup-pulssaudio-centos.sh
, this need to be run prior to running this project in a docker environment.
The script
If you're looking for help, try Developer Support or our Developer Forum. Priority support is also available with Premier Developer Support plans.
Make sure to review our documentation as a reference when building your Zoom Apps.