How to get video using headless linux sdk bot?

I’m trying to get raw video data using Zoom Headless Linux SDK Bot and in CLI programm say to me :

:white_check_mark: start raw recording
:white_check_mark: create raw video renderer
:white_check_mark: subscribe to raw video
:white_check_mark: subscribe to raw audio

and audio really start recording, but video don’t

I’m using next code in entry.sh:

run() {
  exec ./"$BUILD"/zoomsdk RawVideo -f meeting-video.yuv -d /out;
}

So, what I can do for getting raw video? And if you have solution for getting frames how I can go this?

@emotioniq, happy to help here.

The steps you’re taking sound correct at a high level. But if you’re not getting video, there must be an issue in the source code of your bot.

What we recommend is cross-check your implementation against the Zoom Linux SDK reference code which shows you how to capture the raw video.

Another option is to use Recall.ai . It’s a simple 3rd party API that lets you use meeting bots to get raw audio/video from meetings without you needing to spend months to build, scale and maintain these bots.

Let me know if you have any questions!

@emotioniq

You can cross reference this sample code for Linux as well

Good, I’m tryed using this sample, installed this on Ubuntu 22, but when I start

docker run msdk-5.17.5-on-ubuntu-compact

I have next text

root@server-mmiica:~/Bot/meetingsdk-linux-raw-recording-sample/demo# docker run msdk-5.17.5-on-ubuntu-compact
unix:path=/run/dbus/system_bus_socket,guid=adaefd96ff7dc8d3806adba965c88dc6
Adding user `root' to group `pulse-access' ...
Adding user root to group pulse-access
Done.
Adding user `root' to group `audio' ...
Adding user root to group audio
Done.
cp: target '/root/.config/pulse/' is not a directory
W: [pulseaudio] main.c: This program is not intended to be run as root (unless --system is specified).
19
mkdir: cannot create directory '/root/.config': File exists
getpath
self path: /app/demo/bin
Readfile success.
Reading..meeting_number: "****************"
Reading..token: "****************"
Reading..meeting_password: ""
Reading..recording_token: "****************"
Reading..GetVideoRawData: "true"
Reading..GetAudioRawData: "false"
Reading..SendVideoRawData: "false"
Reading..SendAudioRawData: "false"
Meeting Number: ****************
Token:****************
meeting_password: 
recording_token: ***********
GetVideoRawData before parsing is : true
GetVideoRawData: 1
GetAudioRawData before parsing is : false
GetAudioRawData: 0
SendVideoRawData before parsing is : false
SendVideoRawData: 0
SendAudioRawData before parsing is : false
SendAudioRawData: 0
directory of config file: /app/demo/bin/config.txt
Init meetingSdk:success
AuthService created.
AuthSDK:token extracted from config file ****************
AuthServiceEventListener added.

Bot don’t connecting to the meeting, maybe I do smth wrong?

@chunsiong.zoom what can I do with this?

@emotioniq do you have a sample if the signature / token?
I would recommend leaving the recording_token as “” right now during testing.

@chunsiong.zoom what is the “token” in config.txt?


meeting_number: "1234567890"
token: "xxxxxxxx.yyyyyyyyyyyyyyyyyy.zzzzzzzzzzzzzzzzz"
meeting_password: "123456"
recording_token: ""
GetVideoRawData: "true"
GetAudioRawData: "true"
SendVideoRawData: "false"
SendAudioRawData: "false"

I create Zoom App and get from zoom app sdk for linux, what is the correct token for this demo “Secret Token”? “Verification Token”?

@emotioniq ,

Zoom Apps actually refers to a legacy app, wanted to call this out to remove the ambiguity.

Could I confirm you are using this General App?

If you are, on the top left, there is your Client ID and Client Secret, these are used to sign a SDK Auth Signature. You will use your SDK Auth Signature in config.txt’s token field

You will also need to turn on the toggle switch for Meeting SDK from the embed menu.

@chunsiong.zoom SDK Auth Signature is it JWT token?

@emotioniq,

Correct, the SDK authentication signature is a JWT token. For more details, please refer to our documentation on this topic:

Please try the latest version of Sample App; a recent fix has been applied.