{"id":21319491,"url":"https://github.com/zoom/meetingsdk-linux-raw-recording-sample","last_synced_at":"2025-12-26T07:39:41.593Z","repository":{"id":200881094,"uuid":"702521800","full_name":"zoom/meetingsdk-linux-raw-recording-sample","owner":"zoom","description":null,"archived":false,"fork":false,"pushed_at":"2024-12-10T07:20:47.000Z","size":30,"stargazers_count":33,"open_issues_count":10,"forks_count":14,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-01-22T11:23:27.247Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zoom.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-09T13:29:36.000Z","updated_at":"2025-01-20T09:54:19.000Z","dependencies_parsed_at":null,"dependency_job_id":"3a33a57f-3ac0-40f9-b377-b81af1d0c4fc","html_url":"https://github.com/zoom/meetingsdk-linux-raw-recording-sample","commit_stats":null,"previous_names":["zoom/meetingsdk-linux-raw-recording-sample"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoom%2Fmeetingsdk-linux-raw-recording-sample","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoom%2Fmeetingsdk-linux-raw-recording-sample/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoom%2Fmeetingsdk-linux-raw-recording-sample/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoom%2Fmeetingsdk-linux-raw-recording-sample/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zoom","download_url":"https://codeload.github.com/zoom/meetingsdk-linux-raw-recording-sample/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243800333,"owners_count":20349993,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-21T19:42:23.146Z","updated_at":"2025-12-26T07:39:41.580Z","avatar_url":"https://github.com/zoom.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"#Zoom Meeting SDK Linux Sample App\n\nThe is a sample app for Zoom Meeting SDK Linux. It demonstrates access to raw audio and raw video in a headless docker environment.\n\n## Prerequistes\n1. [Zoom Account](https://zoom.us)\n2. [Zoom Meeting SDK App Type](https://marketplace.zoom.us)\n2. Authentication token signed by \n    1. Client ID\n    2. Client Secret\n3. Meeting Recording Token (Optional)\n4. Docker environment\n5. Linux or Windows with WSL environment.\n6. VS Code or Visual Studio\n ======================================================================\n\n## Getting Started\n\n### Download Linux Meeting SDK from marketplace.zoom.us\n\n1 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\n\n -  `h` to `demo/include/h`\n - `qt_libs` to `demo/lib/zoom_meeting_sdk/qt_libs`\n - all the `lib******.so` files to `demo/lib/zoom_meeting_sdk/lib******.so`\n - copy `translation.json` to `demo/lib/zoom_meeting_sdk/json`\n - softlink  `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.\n\n2 Execute `cmake -B build` in demo/ folder . After successful` cmake`, the `demo/build/` folder will be generated.\n\n3 Execute `make` in the `/demo/build/` directory to compile\n\n### Notes for using the demo:\n1. The sdk auth token, password, meeting number etc.. needs to be written in the config.txt file.\nThe [recording_token](https://developers.zoom.us/docs/meeting-sdk/apis/#operation/meetingLocalRecordingJoinToken) when entered, will allow you to recording with additional actions from host.\n\n`GetVideoRawData`, `GetAudioRawData`, `SendVideoRawData`, `SendAudioRawData` are boolean control variables. You can search for them in the sample code to understand the flow.\n\n### Disclaimer\nPlease 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 \u0026 secrets, SDK keys \u0026 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.\n\n```\n\nmeeting_number: \"1234567890\"\ntoken: \"xxxxxxxx.yyyyyyyyyyyyyyyyyy.zzzzzzzzzzzzzzzzz\"\nmeeting_password: \"123456\"\nrecording_token: \"\"\nGetVideoRawData: \"true\"\nGetAudioRawData: \"true\"\nSendVideoRawData: \"false\"\nSendAudioRawData: \"false\"\n\n```\n2. You need to fill in `withoutloginParam.userName = \"\";`  in `meeting_sdk_demo.cpp`. `meeting_sdk_demo.cpp` is the starting point of the demo app.\n3. Once init sdk and auth sdk are successfully executed, only then you can join and leave meeting.\n4. Once you have successfully joined a meeting, subscribing to raw audio and raw video requires either\n    1. either host/co-host/local-recording rights or \n    2. meeting recording token\n5. You will need a file named `~\\.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` files\n6. For Sending Raw Audio and Raw Video, there are 2 methods (`turnOnSendVideoAndAudio` and `turnOnSendVideoAndAudio`) which you will need to call \n## CMakeLists.txt\nIf you have additional cpp and/or .h files, you might need to be included in this CMakeLists.txt\n\n```\nadd_executable(meetingSDKDemo \n              ${CMAKE_SOURCE_DIR}/meeting_sdk_demo.cpp\n              ${CMAKE_SOURCE_DIR}/init_auth_sdk_workflow.cpp\n              ${CMAKE_SOURCE_DIR}/meeting_sdk_util.cpp\n              ${CMAKE_SOURCE_DIR}/init_auth_sdk_workflow.h\n              ${CMAKE_SOURCE_DIR}/meeting_sdk_util.h\n              ${CMAKE_SOURCE_DIR}/RegressionTestRawdataRender.cpp\n              ${CMAKE_SOURCE_DIR}/RegressionTestRawdataRender.h\n              ${CMAKE_SOURCE_DIR}/custom_ui_eventSink.h\n              ${CMAKE_SOURCE_DIR}/custom_ui_eventSink.cpp\n              ${CMAKE_SOURCE_DIR}/MeetingReminderEventListener.h\n              ${CMAKE_SOURCE_DIR}/MeetingReminderEventListener.cpp\n              )\n```\n\nSimilarly for libraries\n\n```\ntarget_link_libraries(meetingSDKDemo gcc_s gcc)\ntarget_link_libraries(meetingSDKDemo meetingsdk)\ntarget_link_libraries(meetingSDKDemo glib-2.0)\ntarget_link_libraries(meetingSDKDemo pthread)\n```\n\n# Docker\n\nThe sample app has been tested on Centos 8, Centos 9, Ubuntu 22 and Ubuntu 23.\nHere are some dependencies you will need to include.\n\n\n## Centos\n\nThis is tested on WSL and Docker centos 9 and Centos 8\nHere are some dependencies to get it to run on Centos.\nSome packages might be redundant, and has not been optimized.\n\n\n#### Install files for compiling\n```\nsudo yum install cmake\nsudo yum install gcc gcc-c++\n```\n\n#### Enable the CodeReady Linux Builder repository\n```\nsudo dnf config-manager --set-enabled crb\n```\n\n#### Install the EPEL RPM.\n\n```\nsudo dnf install epel-release epel-next-release\n```\n\n\n#### CURL related dependencies\n ```\n yum install -y openssl-devel\n yum install -y libcurl-devel \n ```\n\n#### Install Pulseaudio\n``` \nyum install -y  pulseaudio pulseaudio-utils \n```\n\n#### If you encounter: Fatal error: SDL2/SDL.h: No such file or directory. This is no longer in used at code level, but leaving this here for legacy support purposes\n```\nsudo yum -y install SDL2-devel\n```\n\n#### If you encounter these error Messages\n#/usr/bin/ld: warning: libxcb-image.so.0, needed by /root/release_demo/demo/libmeetingsdk.so, not found (try using -rpath or -rpath-link)\n#/usr/bin/ld: warning: libxcb-keysyms.so.1, needed by /root/release_demo/demo/libmeetingsdk.so, not found (try using -rpath or -rpath-link)\n```\nsudo yum install libxcb-devel\nsudo yum install xcb-util-devel\nsudo yum install xcb-util-image\nsudo yum install xcb-util-keysyms\n```\n\n#### If you encounter these runtime runtime error\n#libGL error: MESA-LOADER: failed to open swrast: /usr/lib64/dri/swrast_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib64/dri, suffix _dri)\n```\nsudo yum install mesa-libGL\nsudo yum install mesa-libGL-devel\nsudo yum install mesa-dri-drivers\n```\n\n==============================================================\n\n## Ubuntu \n\nThis is tested on WSL and Docker Ubuntu 22 and 23\nHere are some dependencies to get it to run on Ubuntu.\nSome packages might be redundant, and has not been optimized.\n\n\n#### Install necessary dependencies\n```\napt-get update \u0026\u0026 apt-get install -y build-essential cmake\n\napt-get install -y --no-install-recommends --no-install-suggests \\\n    libx11-xcb1 \\\n    libxcb-xfixes0 \\\n    libxcb-shape0 \\\n    libxcb-shm0 \\\n    libxcb-randr0 \\\n    libxcb-randr0 \\\n    libxcb-image0 \\\n    libxcb-keysyms1 \\\n    libxcb-xtest0 \n ```\n #### optional libraries\n``` \napt-get install -y --no-install-recommends --no-install-suggests \\\n    libdbus-1-3 \\\n    libglib2.0-0 \\\n    libgbm1 \\\n    libxfixes3 \\\n    libgl1 \\\n    libdrm2 \\\n    libgssapi-krb5-2 \n```\n\n\n#### CURL related dependencies\n```\napt-get install libcurl4-openssl-dev \\\n    openssl \\\n    ca-certificates \\\n    pkg-config \n```\n\n#### Install Pulseaudio\n```\napt-get install -y  pulseaudio pulseaudio-utils \n```\n\n#### if you are getting error about \u003cSDL2/SDL.h\u003e\n```\napt-get install libegl-mesa0 libsdl2-dev g++-multilib\n```\n\n\n\n\n## Addition requirement for raw audio data in docker / headless environment with no soundcard\nAdditional file in ~/.config/zoomus.conf\n\n[General]\nsystem.audio.type=default\n\n## Dockerfiles\n\n\nDockerfile targetting different distros are provided in this sample app as well (Dockerfile-centos, Dockerfile-Ubuntu .....)\nCurrently this is tested on \n- Centos 9 (functionality where custom function of fetching JWT Token from Web Service does not work, main SDK function works fully)\n- Centos 8\n- Ubuntu 22\n\n## Run these in /demo directory\n\n\n#### Centos 8\ndocker build -t msdk-6.6.10-on-centos8-compact -f Dockerfile-Centos8/Dockerfile .\ndocker run -it --rm msdk-6.6.10-on-centos8-compact\n\n#### Centos 9\ndocker build -t msdk-6.6.10-on-centos9-compact -f Dockerfile-Centos9/Dockerfile .\ndocker run -it --rm msdk-6.6.10-on-centos9-compact\n\n#### Ubuntu 22\ndocker build -t msdk-6.6.10-on-ubuntu-compact -f Dockerfile-Ubuntu/Dockerfile .\ndocker run -it --rm msdk-6.6.10-on-ubuntu-compact\n\n#### ol8\ndocker build -t msdk-6.6.10-on-oraclelinux8-compact -f Dockerfile-ol8/Dockerfile .\ndocker run -it --rm msdk-6.6.10-on-oraclelinux8-compact\n\n\n## Pulseaudio\n\nThe configuration for pulseaudio has been provided for you as shell scripts.\n\nThe 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.\n\nThe script \n- starts the pulseaudio service, \n- creates a virtual speaker, \n- a virtual microphone, and \n- add a zoomus.conf file in the docker environment.\n\n## Need help?\n\nIf you're looking for help, try [Developer Support](https://devsupport.zoom.us) or\nour [Developer Forum](https://devforum.zoom.us). Priority support is also available\nwith [Premier Developer Support](https://zoom.us/docs/en-us/developer-support-plans.html) plans.\n\n### Documentation\nMake sure to review [our documentation](https://marketplace.zoom.us/docs/zoom-apps/introduction/) as a reference when building your Zoom Apps.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzoom%2Fmeetingsdk-linux-raw-recording-sample","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzoom%2Fmeetingsdk-linux-raw-recording-sample","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzoom%2Fmeetingsdk-linux-raw-recording-sample/lists"}