Unable to run sample Meeting SDK app for linux

Meeting SDK Type: Linux
Meeting SDK Version: zoom-meeting-sdk-linux_x86_64-6.1.10.1435

Description

I am following the tutorial from this repository: GitHub - zoom/meetingsdk-linux-raw-recording-sample.

The repo was recently updated to support the latest meeting SDK version. However, when I try to run the Docker Image for ubuntu with the latest version, I am getting these errors:

Hit:1 http://ports.ubuntu.com/ubuntu-ports jammy InRelease
Get:2 http://ports.ubuntu.com/ubuntu-ports jammy-updates InRelease [128 kB]
Hit:3 http://ports.ubuntu.com/ubuntu-ports jammy-backports InRelease
Get:4 http://ports.ubuntu.com/ubuntu-ports jammy-security InRelease [129 kB]
Fetched 257 kB in 3s (96.8 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package g++-multilib
E: Couldn't find any package by regex 'g++-multilib' 

I can see that the DockerFile for Ubuntu wasn’t updated for this latest version.

Help Needed

I just need the updated steps and/or the updated files so that I can run this example with the latest version of the Meeting SDK for Linux.

I need to do this as I need to update my SDK version in compliance with the Minimum Version Policy mentioned in the Docs here: Meeting SDK - Minimum version policy

Please let me know how can I run this example successfully. As mentioned earlier, I am using the DockerFile for Ubuntu which uses the Ubuntu version 22.04.

@mihir.dayal are you trying to run this on macOS?

@chunsiong.zoom Yes, that’s correct

@mihir.dayal for your docker build and docker run command, on the mac terminal, could you add this to force x64 version of ubuntu?

–platform linux/amd64

@chunsiong.zoom , So adding that helped a little bit, I was able to progress further , but now I am getting the following errors on running the following command in the macOS terminal:

docker build --platform linux/amd64 -t new_zoom_bot -f Dockerfile-Ubuntu/Dockerfile .

The error log:

 => ERROR [10/15] RUN cd /app/demo && rm -rf bin && rm -rf build && cmake -B build && cd build && make                                                                                                                                                                   3.5s
------
 > [10/15] RUN cd /app/demo && rm -rf bin && rm -rf build && cmake -B build && cd build && make:
0.675 -- The CXX compiler identification is GNU 11.4.0
0.702 -- Detecting CXX compiler ABI info
1.356 -- Detecting CXX compiler ABI info - done
1.370 -- Check for working CXX compiler: /usr/bin/c++ - skipped
1.371 -- Detecting CXX compile features
1.371 -- Detecting CXX compile features - done
1.387 -- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.2")
1.394 -- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.11")
1.395 -- Checking for module 'glib-2.0'
1.477 --   Found glib-2.0, version 2.72.4
1.696 -- Checking for module 'gio-2.0'
1.785 --   Found gio-2.0, version 2.72.4
2.382 -- Configuring done
2.392 -- Generating done
2.406 -- Build files have been written to: /app/demo/build
2.672 [  8%] Building CXX object CMakeFiles/meetingSDKDemo.dir/meeting_sdk_demo.cpp.o
3.173 In file included from /app/demo/meeting_sdk_demo.cpp:28:
3.173 /app/demo/MeetingReminderEventListener.h:20:79: error: 'IMeetingEnableReminderHandler' has not been declared
3.173    20 |         virtual void onEnableReminderNotify(IMeetingReminderContent* content, IMeetingEnableReminderHandler* handle);
3.173       |                                                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3.174 In file included from /app/demo/meeting_sdk_demo.cpp:37:
3.174 /app/demo/MeetingParticipantsCtrlEventListener.h:98:50: error: 'FocusModeShareType' has not been declared
3.174    98 |         virtual void onFocusModeShareTypeChanged(FocusModeShareType type);
3.174       |                                                  ^~~~~~~~~~~~~~~~~~
3.174 In file included from /app/demo/meeting_sdk_demo.cpp:38:
3.174 /app/demo/MeetingRecordingCtrlEventListener.h:33:54: error: 'RequestStartCloudRecordingStatus' has not been declared
3.174    33 |         virtual void onRequestCloudRecordingResponse(RequestStartCloudRecordingStatus status);
3.174       |                                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3.174 /app/demo/MeetingRecordingCtrlEventListener.h:41:53: error: 'IRequestStartCloudRecordingHandler' has not been declared
3.174    41 |         virtual void onStartCloudRecordingRequested(IRequestStartCloudRecordingHandler* handler);
3.174       |                                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3.174 /app/demo/MeetingRecordingCtrlEventListener.h:49:62: error: 'IRequestEnableAndStartSmartRecordingHandler' has not been declared
3.174    49 |         virtual void onEnableAndStartSmartRecordingRequested(IRequestEnableAndStartSmartRecordingHandler* handler);
3.174       |                                                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3.174 /app/demo/MeetingRecordingCtrlEventListener.h:53:59: error: 'ISmartRecordingEnableActionHandler' has not been declared
3.174    53 |         virtual void onSmartRecordingEnableActionCallback(ISmartRecordingEnableActionHandler* handler);
3.174       |                                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3.174 /app/demo/MeetingRecordingCtrlEventListener.h:55:49: error: 'TranscodingStatus' has not been declared
3.174    55 |         virtual void onTranscodingStatusChanged(TranscodingStatus status, const zchar_t* path);
3.174       |                                                 ^~~~~~~~~~~~~~~~~
3.270 make[2]: *** [CMakeFiles/meetingSDKDemo.dir/build.make:76: CMakeFiles/meetingSDKDemo.dir/meeting_sdk_demo.cpp.o] Error 1
3.271 make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/meetingSDKDemo.dir/all] Error 2
3.273 make: *** [Makefile:91: all] Error 2
------
Dockerfile:51
--------------------
  49 |
  50 |     # Execute additional commands
  51 | >>> RUN cd /app/demo && rm -rf bin && rm -rf build && cmake -B build && cd build && make
  52 |
  53 |     # Set the working directory to the source folder
--------------------
ERROR: failed to solve: process "/bin/sh -c cd /app/demo && rm -rf bin && rm -rf build && cmake -B build && cd build && make" did not complete successfully: exit code: 2

I am not too familiar with C++ so I might be wrong but it seems like the classes are not updated maybe?

@mihir.dayal you might need to use the exact version of sdk mentioned in version.txt

@chunsiong.zoom The version.txt says 6.1.10 and I am using v6.1.10.1435 as that is the closest version available to use (see attached screenshots)

@mihir.dayal i just tried and it works for 6.1.10

Hey @mihir.dayal, if you’re trying to run the Zoom Meeting SDK on Linux and encountering issues with outdated Dockerfiles or package dependencies, you might want to check out the Recall.ai API. It’s a simple 3rd party API that lets you use meeting bots to get raw audio/video/metadata from meetings without you needing to spend months to build, scale, and maintain these bots. Here are the API docs: https://docs.recall.ai

@chunsiong.zoom Thanks for the help! I did manage to finally get it working! Ended up taking a fresh pull and followed the steps closely this time, maybe I messed up some files on the earlier attempts. However, I have a few questions related to this:

  1. In the config.txt, there’ a token field. Is this the OAuth token for the user?
  2. I couldn’t find a place to store the Zoom App Client ID and the Client Secret. I am assuming it will be added in the config.txt in a similar format as the other fields (client_secret, client_id). Please correct me if I am wrong.
  3. As per my understanding, after adding (1. and 2.), the bot should join the meeting and start recording. Is this correct or will there be any other steps which I would need to follow too?

@mihir.dayal

  1. The token in config.txt is your jwt token / auth token.
  2. You will need to sign the token yourself, the sample code does not sign a token using your Cilent ID and Client Secret.
  3. This code sample is a code sample, you will need to implement your own recording. It will provide you with raw PCM audio frames and raw YUV video frames

@chunsiong.zoom All right, thanks for the tips! I’ll try to get it working and let you know if I am facing any other issues with this.

1 Like