Skip to main content

zoom-meeting-sdk-windows

Zoom Meeting SDK for Windows - Native C++ SDK for embedding Zoom meetings into Windows desktop applications. Supports custom UI architecture with raw video/audio data, headless bots, and deep integration with meeting features. Includes SDK architecture patterns and Windows message loop handling.

설치로 이동

소스 정보

저장소
anthropics/knowledge-work-plugins
최근 소스 활동
2026년 4월 9일 23:28
감지된 SKILL.md 언어
영어
스타
25,764
포크
3,038

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
24 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
zoom-meeting-sdk-windows
description
Zoom Meeting SDK for Windows - Native C++ SDK for embedding Zoom meetings into Windows desktop applications. Supports custom UI architecture with raw video/audio data, headless bots, and deep integration with meeting features. Includes SDK architecture patterns and Windows message loop handling.
user-invocable
false
triggers
["meeting sdk windows","windows meeting sdk","windows meeting bot","c++ meeting sdk windows","custom ui meeting windows"]
# Zoom Meeting SDK (Windows) Embed Zoom meeting capabilities into Windows desktop applications for native C++ integrations and headless bots. ## New to Zoom SDK? Start Here! **The fastest way to master the SDK:** 1. **[SDK Architecture Pattern](concepts/sdk-architecture-pattern.md)** - Learn the universal pattern that works for ALL 35+ features 2. **[Authentication Pattern](examples/authentication-pattern.md)** - Get a working bot joining meetings 3. **[Windows Message Loop](troubleshooting/windows-message-loop.md)** - Fix the #1 reason callbacks don't fire **Building a Custom UI?** - [Custom UI Architecture](concepts/custom-ui-architecture.md) - How SDK rendering actually works (child HWNDs, D3D, etc.) - [Custom UI Video Rendering Example](examples/custom-ui-video-rendering.md) - Complete working code - [SDK-Rendered vs Self-Rendered](concepts/custom-ui-vs-raw-data.md) - Choose the right approach - [Custom UI Interface Methods](references/interface-methods.md) - All 13 required virtual methods **Having issues?** - Build errors → [Build Errors Guide](troubleshooting/build-errors.md) - Callbacks not firing → [Windows Message Loop](troubleshooting/windows-message-loop.md) - Quick diagnostics → [Common Issues](troubleshooting/common-issues.md) - Performance / service quality → [service-quality.md](examples/service-quality.md) - Deployment notes → [deployment.md](references/deployment.md) - MSBuild from git bash → [Build Errors Guide](troubleshooting/build-errors.md#msbuild-command-pattern) - Complete navigation → [SKILL.md](SKILL.md) ## Prerequisites - Zoom app with Meeting SDK credentials (Client ID & Secret) - Visual Studio 2019/2022 or later - Windows 10 or later - C++ development environment - vcpkg for dependency management > **Need help with authentication?** See the **[zoom-oauth](../../oauth/SKILL.md)** skill for JWT token generation. ## Project Preferences & Learnings > **IMPORTANT**: These are hard-won preferences from real project experience. Follow these when creating new projects. ### Do NOT use CMake — Use native Visual Studio `.vcxproj` **Always create a native Visual Studio `.sln` + `.vcxproj` project**, not a CMake project. Reasons: - More standard and familiar for Windows C++ developers - Developers can double-click the `.sln` to open in Visual Studio immediately - Project settings (include dirs, lib dirs, preprocessor defines) are easier to see and edit in the VS Property Pages UI - No extra CMake tooling or configuration step required - Friendlier and easier for developers to understand and maintain ### `config.json` must be visible in Solution Explorer The `config.json` file (containing `sdk_jwt`, `meeting_number`, `passcode`) must be: 1. **Included in the `.vcxproj`** as a `<None>` item with `<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>` 2. **Placed in a "Config" filter** in the `.vcxproj.filters` file so it appears under a "Config" folder in Solution Explorer 3. **Easily editable** by developers directly from Solution Explorer — they should never have to hunt for it in File Explorer Example `.vcxproj` entry: ```xml <ItemGroup> <None Include="config.json"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> </ItemGroup> ``` Example `.vcxproj.filters` entry: ```xml <ItemGroup> <Filter Include="Config"> <UniqueIdentifier>{GUID-HERE}</UniqueIdentifier> </Filter> </ItemGroup> <ItemGroup> <None Include="config.json"> <Filter>Config</Filter> </None> </ItemGroup> ``` ## Overview The Windows SDK is a **C++ native SDK** designed for: - **Desktop applications** - Native Windows apps with full UI control - **Headless bots** - Join meetings without UI - **Raw media access** - Capture/send audio/video streams - **Local recording** - Record meetings locally or to cloud ### Key Architectural Insight The SDK follows a **universal 3-step pattern** for every feature: 1. **Get controller** (singleton): `meetingService->Get[Feature]Controller()` 2. **Implement event listener**: `class MyListener : public I[Feature]Event { ... }` 3. **Register and use**: `controller->SetEvent(listener)` then call methods **This works for ALL features**: audio, video, chat, recording, participants, screen sharing, breakout rooms, webinars, Q&A, polling, whiteboard, and 20+ more! Learn more: **[SDK Architecture Pattern Guide](concepts/sdk-architecture-pattern.md)** ## Quick Start ### 1. Download Windows SDK Download from [Zoom Marketplace](https://marketplace.zoom.us/): - Extract `zoom-meeting-sdk-windows_x86_64-{version}.zip` ### 2. Setup Project Structure ``` your-project/ YourApp/ SDK/ x64/ bin/ # DLL files and dependencies h/ # Header files lib/ # sdk.lib x86/ bin/ h/ lib/ YourApp.cpp YourApp.vcxproj config.json ``` Copy SDK files: ```cmd xcopy /E /I sdk-package\x64 your-project\YourApp\SDK\x64\ xcopy /E /I sdk-package\x86 your-project\YourApp\SDK\x86\ ``` ### 3. Install Dependencies (vcpkg) ```powershell # Install vcpkg git clone https://github.com/Microsoft/vcpkg.git C:\vcpkg cd C:\vcpkg .\bootstrap-vcpkg.bat .\vcpkg integrate install # Install dependencies .\vcpkg install jsoncpp:x64-windows .\vcpkg install curl:x64-windows ``` ### 4. Configure Visual Studio Project **Project Properties → C/C++ → General → Additional Include Directories:** ``` $(SolutionDir)SDK\$(PlatformTarget)\h C:\vcpkg\packages\jsoncpp_x64-windows\include C:\vcpkg\packages\curl_x64-windows\include ``` **Project Properties → Linker → General → Additional Library Directories:** ``` $(SolutionDir)SDK\$(PlatformTarget)\lib ``` **Project Properties → Linker → Input → Additional Dependencies:** ``` sdk.lib ``` **Post-Build Event** (Copy DLLs to output): ```cmd xcopy /Y /D "$(SolutionDir)SDK\$(PlatformTarget)\bin\*.*" "$(OutDir)" ``` ### 5. Configure Credentials Create `config.json`: ```json { "sdk_jwt": "YOUR_JWT_TOKEN", "meeting_number": "1234567890", "passcode": "password123", "zak": "" } ``` ### 6. Build & Run - Open solution in Visual Studio - Select x64 or x86 configuration - Press F5 to build and run ## Core Workflow ``` ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ InitSDK │───►│ AuthSDK │───►│ JoinMeeting │───►│ Raw Data │ │ │ │ (JWT) │ │ │ │ Subscribe │ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │ │ ▼ ▼ OnAuthComplete onInMeeting callback callback ``` **⚠️ CRITICAL**: Add Windows message loop or callbacks won't fire! ```cpp while (!done) { MSG msg; while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } std::this_thread::sleep_for(std::chrono::milliseconds(100)); } ``` See: [Windows Message Loop Guide](troubleshooting/windows-message-loop.md) ## Code Examples > **💡 Pro Tip**: These are minimal examples. For complete, tested code see: > - [Authentication Pattern](examples/authentication-pattern.md) - Full auth workflow > - [Raw Video Capture](examples/raw-video-capture.md) - Complete video capture > - [SDK Architecture Pattern](concepts/sdk-architecture-pattern.md) - Implement any feature ### Important: Include Order **CRITICAL**: Include headers in this exact order or you'll get build errors: ```cpp #include <windows.h> // MUST be first #include <cstdint> // MUST be second (SDK headers use uint32_t) // ... other standard headers ... #include <zoom_sdk.h> #include <meeting_service_components/meeting_audio_interface.h> // BEFORE participants! #include <meeting_service_components/meeting_participants_ctrl_interface.h> ``` See: [Build Errors Guide](troubleshooting/build-errors.md) for all dependency fixes. ### 1. Initialize SDK ```cpp #include <windows.h> #include <cstdint> #include <zoom_sdk.h> using namespace ZOOM_SDK_NAMESPACE; bool InitMeetingSDK() { InitParam initParam; initParam.strWebDomain = L"https://zoom.us"; initParam.strSupportUrl = L"https://zoom.us"; initParam.emLanguageID = LANGUAGE_English; initParam.enableLogByDefault = true; initParam.enableGenerateDump = true; SDKError err = InitSDK(initParam); if (err != SDKERR_SUCCESS) { std::wcout << L"InitSDK failed: " << err << std::endl; return false; } return true; } ``` ### 2. Authenticate with JWT ```cpp #include <windows.h> #include <cstdint> #include <auth_service_interface.h> #include "AuthServiceEventListener.h" IAuthService* authService = nullptr; void OnAuthenticationComplete() { std::cout << "Authentication successful!" << std::endl; JoinMeeting(); // Proceed to join meeting } bool AuthenticateSDK(const std::wstring& jwtToken) { CreateAuthService(&authService); if (!authService) return false; // Set event listener BEFORE calling SDKAuth authService->SetEvent(new AuthServiceEventListener(&OnAuthenticationComplete)); // Authenticate with JWT AuthContext authContext; authContext.jwt_token = jwtToken.c_str(); SDKError err = authService->SDKAuth(authContext); if (err != SDKERR_SUCCESS) { std::wcout << L"SDKAuth failed: " << err << std::endl; return false; } // CRITICAL: Add message loop or callback won't fire! // See complete example: examples/authentication-pattern.md return true; } ``` **AuthServiceEventListener.h:** ```cpp #include <windows.h> #include <cstdint> #include <auth_service_interface.h> #include <iostream> using namespace ZOOM_SDK_NAMESPACE; class AuthServiceEventListener : public IAuthServiceEvent { public: AuthServiceEventListener(void (*onComplete)()) : onAuthComplete(onComplete) {} void onAuthenticationReturn(AuthResult ret) override { if (ret == AUTHRET_SUCCESS && onAuthComplete) { onAuthComplete(); } else { std::cout << "Auth failed: " << ret << std::endl; } } // Must implement ALL pure virtual methods (6 total) void onLoginReturnWithReason(LOGINSTATUS ret, IAccountInfo* info, LoginFailReason reason) override {} void onLogout() override {} void onZoomIdentityExpired() override {} void onZoomAuthIdentityExpired() override {} #if defined(WIN32) void onNotificationServiceStatus(SDKNotificationServiceStatus status, SDKNotificationServiceError error) override {} #endif private: void (*onAuthComplete)(); }; ``` **See complete working code**: [Authentication Pattern Guide](examples/authentication-pattern.md) ### 3. Join Meeting ```cpp #include <meeting_service_interface.h> #include "MeetingServiceEventListener.h" IMeetingService* meetingService = nullptr; void OnMeetingJoined() { std::cout << "Joining meeting..." << std::endl; } void OnInMeeting() { std::cout << "In meeting now!" << std::endl; // Start raw data capture here } void OnMeetingEnds() { std::cout << "Meeting ended" << std::endl; } bool JoinMeeting(UINT64 meetingNumber, const std::wstring& password) { CreateMeetingService(&meetingService); if (!meetingService) return false; // Set event listener meetingService->SetEvent( new MeetingServiceEventListener(&OnMeetingJoined, &OnMeetingEnds, &OnInMeeting) ); // Prepare join parameters JoinParam joinParam; joinParam.userType = SDK_UT_WITHOUT_LOGIN; JoinParam4WithoutLogin& params = joinParam.param.withoutloginuserJoin; params.meetingNumber = meetingNumber; params.userName = L"Bot User"; params.psw = password.c_str(); params.isVideoOff = false; params.isAudioOff = false; SDKError err = meetingService->Join(joinParam); if (err != SDKERR_SUCCESS) { std::wcout << L"Join failed: " << err << std::endl; return false; } return true; } ``` **MeetingServiceEventListener.h:** ```cpp #include <windows.h> #include <cstdint> #include <meeting_service_interface.h> #include <iostream> using namespace ZOOM_SDK_NAMESPACE; class MeetingServiceEventListener : public IMeetingServiceEvent { public: MeetingServiceEventListener( void (*onJoined)(), void (*onEnded)(), void (*onInMeeting)() ) : onMeetingJoined(onJoined), onMeetingEnded(onEnded), onInMeetingCallback(onInMeeting) {} void onMeetingStatusChanged(MeetingStatus status, int iResult) override { if (status == MEETING_STATUS_CONNECTING) { if (onMeetingJoined) onMeetingJoined(); }
GitHub에서 보기
이 SKILL.md는 매우 커서 SkillsMP가 여기에는 첫 섹션만 미리 보여줍니다. GitHub에서 보기