jpskill.com
💬 コミュニケーション コミュニティ

video-sdk/linux

Zoom Video SDK for Linux - C++ headless bots, raw audio/video capture/injection, Qt/GTK integration, Docker support

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o video-sdk-linux.zip https://jpskill.com/download/22713.zip && unzip -o video-sdk-linux.zip && rm video-sdk-linux.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/22713.zip -OutFile "$d\video-sdk-linux.zip"; Expand-Archive "$d\video-sdk-linux.zip" -DestinationPath $d -Force; ri "$d\video-sdk-linux.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して video-sdk-linux.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → video-sdk-linux フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
2

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

Zoom Video SDK - Linux 開発

Linux で Zoom Video SDK を使用した開発に関する専門的なガイダンスです。ヘッドレスボット、生メディアキャプチャ/インジェクションアプリケーション、および Qt/GTK を使用したカスタム UI 統合を構築できます。

公式ドキュメント: https://developers.zoom.us/docs/video-sdk/linux/ API リファレンス: https://marketplacefront.zoom.us/sdk/custom/linux/ サンプルリポジトリ: https://github.com/zoom/videosdk-linux-raw-recording-sample

クイックリンク

Video SDK を初めてお使いの方はこちら:

  1. SDK アーキテクチャパターン - あらゆる機能に対応するユニバーサルな3ステップパターン
  2. セッション参加パターン - セッションに参加するための完全な動作コード
  3. Raw Data vs Canvas - 重要: Linux には Canvas API がありません - raw data のみです
  4. Raw Video Capture - YUV420 フレームのキャプチャと処理

リファレンス:

問題が発生していますか?

Windows/macOS との主な違い

機能 Linux Windows/Mac
Canvas API ❌ 利用不可 ✅ 利用可能
Raw Data パイプ 唯一のオプション ✅ 利用可能
UI 統合 Qt, GTK, SDL2, OpenGL Win32/WinForms/WPF, Cocoa
ヘッドレスサポート ✅ 非常に優れている (Docker) 制限あり
オーディオ PulseAudio が必要 ネイティブ
仮想デバイス ✅ ヘッドレスに必須 オプション

SDK の概要

Linux 用 Zoom Video SDK は、以下の用途に最適化された C++ ライブラリです。

  • ヘッドレスボット: Docker/WSL サポート、ディスプレイ不要
  • Raw Data アクセス: YUV420 ビデオ、PCM オーディオのキャプチャ
  • Raw Data インジェクション: カスタムメディア用の仮想カメラ/マイク
  • 画面共有: 共有データのキャプチャまたはインジェクション
  • クラウドレコーディング: セッションを Zoom クラウドに記録
  • ライブストリーミング: RTMP エンドポイントへのストリーミング
  • ライブトランスクリプション: リアルタイムの音声テキスト変換
  • Qt/GTK 統合: 完全な UI フレームワークサポート

前提条件

システム要件

  • OS: Ubuntu 20.04 以降、Debian 11 以降、または互換性のある OS
  • アーキテクチャ: x64 (推奨)、ARM64
  • コンパイラ: GCC 9 以降、Clang 10 以降
  • CMake: 3.14 以降
  • Qt5: SDK にバンドルされています (システムに Qt5 をインストールしないでください)

依存関係

sudo apt update
sudo apt install -y build-essential gcc cmake libglib2.0-dev liblzma-dev \
    libxcb-image0 libxcb-keysyms1 libxcb-xfixes0 libxcb-xkb1 libxcb-shape0 \
    libxcb-shm0 libxcb-randr0 libxcb-xtest0 libgbm1 libxtst6 libgl1 libnss3 \
    libasound2 libpulse0

# ヘッドレス Linux の場合
sudo apt install -y pulseaudio

# PulseAudio 設定 (オーディオに必須)
mkdir -p ~/.config
echo "[General]" > ~/.config/zoomus.conf
echo "system.audio.type=default" >> ~/.config/zoomus.conf

# ログディレクトリ
mkdir -p ~/.zoom/logs

クイックスタート

#include "zoom_video_sdk_api.h"
#include "zoom_video_sdk_interface.h"
#include "zoom_video_sdk_delegate_interface.h"

USING_ZOOM_VIDEO_SDK_NAMESPACE

// 1. SDK を作成
IZoomVideoSDK* sdk = CreateZoomVideoSDKObj();

// 2. 初期化
ZoomVideoSDKInitParams init_params;
init_params.domain = "https://zoom.us";
init_params.enableLog = true;
init_params.logFilePrefix = "bot";
init_params.videoRawDataMemoryMode = ZoomVideoSDKRawDataMemoryModeHeap;
init_params.shareRawDataMemoryMode = ZoomVideoSDKRawDataMemoryModeHeap;
init_params.audioRawDataMemoryMode = ZoomVideoSDKRawDataMemoryModeHeap;

sdk->initialize(init_params);

// 3. デリゲートを追加
sdk->addListener(myDelegate);

// 4. セッションに参加
ZoomVideoSDKSessionContext ctx;
ctx.sessionName = "my-session";
ctx.userName = "Linux Bot";
ctx.token = "jwt-token";
ctx.audioOption.connect = true;
ctx.audioOption.mute = false;
ctx.videoOption.localVideoOn = false;

// ヘッドレスの場合: 仮想オーディオスピーカー
ctx.virtualAudioSpeaker = new VirtualSpeaker();

IZoomVideoSDKSession* session = sdk->joinSession(ctx);

完全なコードについては、セッション参加パターン を参照してください。

主要機能

機能 Linux サポート ガイド
セッション管理 ✅ 完全 セッション参加
Raw Video (YUV420) ✅ 唯一のレンダリングオプション Raw Video
Raw Audio (PCM) ✅ 完全 Raw Audio
仮想カメラ/マイク ✅ 完全 仮想デバイス
クラウドレコーディング ✅ 完全 レコーディング
ライブストリーミング ✅ 完全 ライブストリーム
ライブトランスクリプション ✅ 完全 トランスクリプション
コマンドチャネル ✅ 完全 コマンド
チャット ✅ 完全 チャット
Qt 統合 ✅ 推奨 Qt/GTK
GTK 統合 ✅ サポート Qt/GTK
Docker/ヘッドレス ✅ 非常に優れている 仮想デバイス

重要な注意点

⚠️ 重要 #1: Linux には Canvas API がありません

問題: Linux SDK には、Windows/Mac のような Canvas API がありません。

解決策: Raw Data パイプを使用し、独自のレンダリングを実装する必要があります。

参照: Raw Data vs Canvas

⚠️ 重要 #2: オーディオには PulseAudio が必要です

問題: SDK は、Raw Audio 機能に PulseAudio を必要とします。

解決策:

sudo apt inst
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Zoom Video SDK - Linux Development

Expert guidance for developing with the Zoom Video SDK on Linux. Build headless bots, raw media capture/injection applications, and custom UI integrations with Qt/GTK.

Official Documentation: https://developers.zoom.us/docs/video-sdk/linux/ API Reference: https://marketplacefront.zoom.us/sdk/custom/linux/ Sample Repository: https://github.com/zoom/videosdk-linux-raw-recording-sample

Quick Links

New to Video SDK? Follow this path:

  1. SDK Architecture Pattern - Universal 3-step pattern for ANY feature
  2. Session Join Pattern - Complete working code to join a session
  3. Raw Data vs Canvas - CRITICAL: Linux has NO Canvas API - raw data ONLY
  4. Raw Video Capture - Capture and process YUV420 frames

Reference:

Having issues?

Key Differences from Windows/macOS

Feature Linux Windows/Mac
Canvas API ❌ Not available ✅ Available
Raw Data Pipe ONLY option ✅ Available
UI Integration Qt, GTK, SDL2, OpenGL Win32/WinForms/WPF, Cocoa
Headless Support ✅ Excellent (Docker) Limited
Audio PulseAudio required Native
Virtual Devices ✅ Required for headless Optional

SDK Overview

The Zoom Video SDK for Linux is a C++ library optimized for:

  • Headless Bots: Docker/WSL support, no display required
  • Raw Data Access: Capture YUV420 video, PCM audio
  • Raw Data Injection: Virtual camera/mic for custom media
  • Screen Sharing: Capture or inject share data
  • Cloud Recording: Record sessions to Zoom cloud
  • Live Streaming: Stream to RTMP endpoints
  • Live Transcription: Real-time speech-to-text
  • Qt/GTK Integration: Full UI framework support

Prerequisites

System Requirements

  • OS: Ubuntu 20.04+, Debian 11+, or compatible
  • Architecture: x64 (recommended), ARM64
  • Compiler: GCC 9+, Clang 10+
  • CMake: 3.14 or later
  • Qt5: Bundled with SDK (do NOT install system Qt5)

Dependencies

sudo apt update
sudo apt install -y build-essential gcc cmake libglib2.0-dev liblzma-dev \
    libxcb-image0 libxcb-keysyms1 libxcb-xfixes0 libxcb-xkb1 libxcb-shape0 \
    libxcb-shm0 libxcb-randr0 libxcb-xtest0 libgbm1 libxtst6 libgl1 libnss3 \
    libasound2 libpulse0

# For headless Linux
sudo apt install -y pulseaudio

# PulseAudio configuration (CRITICAL for audio)
mkdir -p ~/.config
echo "[General]" > ~/.config/zoomus.conf
echo "system.audio.type=default" >> ~/.config/zoomus.conf

# Log directory
mkdir -p ~/.zoom/logs

Quick Start

#include "zoom_video_sdk_api.h"
#include "zoom_video_sdk_interface.h"
#include "zoom_video_sdk_delegate_interface.h"

USING_ZOOM_VIDEO_SDK_NAMESPACE

// 1. Create SDK
IZoomVideoSDK* sdk = CreateZoomVideoSDKObj();

// 2. Initialize
ZoomVideoSDKInitParams init_params;
init_params.domain = "https://zoom.us";
init_params.enableLog = true;
init_params.logFilePrefix = "bot";
init_params.videoRawDataMemoryMode = ZoomVideoSDKRawDataMemoryModeHeap;
init_params.shareRawDataMemoryMode = ZoomVideoSDKRawDataMemoryModeHeap;
init_params.audioRawDataMemoryMode = ZoomVideoSDKRawDataMemoryModeHeap;

sdk->initialize(init_params);

// 3. Add delegate
sdk->addListener(myDelegate);

// 4. Join session
ZoomVideoSDKSessionContext ctx;
ctx.sessionName = "my-session";
ctx.userName = "Linux Bot";
ctx.token = "jwt-token";
ctx.audioOption.connect = true;
ctx.audioOption.mute = false;
ctx.videoOption.localVideoOn = false;

// For headless: Virtual audio speaker
ctx.virtualAudioSpeaker = new VirtualSpeaker();

IZoomVideoSDKSession* session = sdk->joinSession(ctx);

See Session Join Pattern for complete code.

Key Features

Feature Linux Support Guide
Session Management ✅ Full Session Join
Raw Video (YUV420) ✅ ONLY rendering option Raw Video
Raw Audio (PCM) ✅ Full Raw Audio
Virtual Camera/Mic ✅ Full Virtual Devices
Cloud Recording ✅ Full Recording
Live Streaming ✅ Full Live Stream
Live Transcription ✅ Full Transcription
Command Channel ✅ Full Commands
Chat ✅ Full Chat
Qt Integration ✅ Recommended Qt/GTK
GTK Integration ✅ Supported Qt/GTK
Docker/Headless ✅ Excellent Virtual Devices

Critical Gotchas

⚠️ CRITICAL #1: No Canvas API on Linux

Problem: Linux SDK does NOT have Canvas API like Windows/Mac.

Solution: You MUST use Raw Data Pipe and implement your own rendering.

See: Raw Data vs Canvas

⚠️ CRITICAL #2: PulseAudio Required for Audio

Problem: SDK requires PulseAudio for raw audio functions.

Solution:

sudo apt install -y pulseaudio
mkdir -p ~/.config
echo "[General]" > ~/.config/zoomus.conf
echo "system.audio.type=default" >> ~/.config/zoomus.conf

See: PulseAudio Setup

⚠️ CRITICAL #3: Qt5 Dependencies

Problem: SDK requires Qt5 libraries (bundled, NOT system Qt5).

Solution:

# Copy from SDK package
cp -r samples/qt_libs/Qt/lib/* lib/zoom_video_sdk/

# Create symlinks
cd lib/zoom_video_sdk
for lib in libQt5*.so.5; do ln -sf $lib ${lib%.5}; done

See: Qt Dependencies

⚠️ CRITICAL #4: Heap Memory Mode

Always use heap mode for raw data:

init_params.videoRawDataMemoryMode = ZoomVideoSDKRawDataMemoryModeHeap;
init_params.shareRawDataMemoryMode = ZoomVideoSDKRawDataMemoryModeHeap;
init_params.audioRawDataMemoryMode = ZoomVideoSDKRawDataMemoryModeHeap;

⚠️ CRITICAL #5: Virtual Audio for Headless

Problem: Docker/headless environments have no audio devices.

Solution: Use virtual audio speaker and mic.

session_context.virtualAudioSpeaker = new VirtualSpeaker();
session_context.virtualAudioMic = new VirtualMic();

See: Virtual Audio/Video

Sample Repositories

Official Samples

Repository Description
raw-recording-sample Raw audio/video capture
qt-quickstart Qt6 UI integration
gtk-quickstart GTK3 UI integration

Sample Architecture

Headless Bot (Docker):
┌──────────────────────────────────┐
│  Virtual Audio Speaker/Mic       │
├──────────────────────────────────┤
│  Raw Data Processing             │
│  - YUV420 → File/Stream   


## Merged from video-sdk/linux/SKILL.md

# Zoom Video SDK Linux - Complete Documentation Index

## Quick Start Path

**If you're new to the SDK, follow this order:**

1. **Read the architecture pattern** → [concepts/sdk-architecture-pattern.md](concepts/sdk-architecture-pattern.md)
   - Universal formula: Singleton → Delegate → Subscribe
   - Once you understand this, you can implement any feature

2. **Understand Linux specifics** → [concepts/raw-data-vs-canvas.md](concepts/raw-data-vs-canvas.md)
   - **CRITICAL**: Linux has NO Canvas API - raw data ONLY

3. **Implement session join** → [examples/session-join-pattern.md](examples/session-join-pattern.md)
   - Complete working JWT + session join code

4. **Setup environment** → [troubleshooting/pulseaudio-setup.md](troubleshooting/pulseaudio-setup.md)
   - PulseAudio configuration (required for audio)
   - [troubleshooting/qt-dependencies.md](troubleshooting/qt-dependencies.md)
   - Qt5 library setup (bundled with SDK)

5. **Implement features** → Choose from examples below

---

## Documentation Structure

video-sdk/linux/ ├── SKILL.md # Main skill overview ├── SKILL.md # This file - navigation guide ├── linux.md # Platform summary │ ├── concepts/ # Core architectural patterns │ ├── sdk-architecture-pattern.md # Universal formula for ANY feature │ ├── singleton-hierarchy.md # 5-level navigation guide │ └── raw-data-vs-canvas.md # Linux-specific: raw data ONLY │ ├── examples/ # Complete working code │ ├── session-join-pattern.md # JWT auth + session join │ └── command-channel.md # Command channel with threading │ ├── troubleshooting/ # Problem solving guides │ ├── pulseaudio-setup.md # Audio configuration │ ├── qt-dependencies.md # Qt5 library setup │ ├── build-errors.md # Common build issues │ └── common-issues.md # Quick diagnostic workflow │ └── references/ # Reference documentation └── linux-reference.md # API hierarchy, methods, error codes


---

## By Use Case

### I want to build a headless bot
1. [SDK Architecture Pattern](concepts/sdk-architecture-pattern.md) - Understand the pattern
2. [Session Join Pattern](examples/session-join-pattern.md) - Join sessions
3. [PulseAudio Setup](troubleshooting/pulseaudio-setup.md) - Configure audio
4. [Raw Data vs Canvas](concepts/raw-data-vs-canvas.md) - Understand Linux differences

### I'm getting build errors
1. [Build Errors Guide](troubleshooting/build-errors.md) - SDK build issues
2. [Qt Dependencies](troubleshooting/qt-dependencies.md) - Qt5 setup
3. [Common Issues](troubleshooting/common-issues.md) - Quick diagnostics

### I'm getting runtime errors
1. [PulseAudio Setup](troubleshooting/pulseaudio-setup.md) - Audio not working
2. [Qt Dependencies](troubleshooting/qt-dependencies.md) - Library not found
3. [Common Issues](troubleshooting/common-issues.md) - Error code tables

### I want to use command channel
1. [Command Channel](examples/command-channel.md) - Send/receive commands
2. [Common Issues](troubleshooting/common-issues.md) - Threading requirements

### I want to implement a specific feature
1. [SDK Architecture Pattern](concepts/sdk-architecture-pattern.md) - **START HERE!**
2. [Singleton Hierarchy](concepts/singleton-hierarchy.md) - Navigate to the feature
3. [API Reference](references/linux-reference.md) - Method signatures

---

## Most Critical Documents

### 1. SDK Architecture Pattern (MASTER DOCUMENT)
**[concepts/sdk-architecture-pattern.md](concepts/sdk-architecture-pattern.md)**

The universal 3-step pattern:
1. Get singleton (SDK, helpers, session, users)
2. Implement delegate (event callbacks)
3. Subscribe and use

### 2. Raw Data vs Canvas (LINUX-SPECIFIC)
**[concepts/raw-data-vs-canvas.md](concepts/raw-data-vs-canvas.md)**

**CRITICAL**: Unlike Windows/Mac, Linux SDK has NO Canvas API. You MUST use raw data pipe.

### 3. PulseAudio Setup (MOST COMMON ISSUE)
**[troubleshooting/pulseaudio-setup.md](troubleshooting/pulseaudio-setup.md)**

Audio requires PulseAudio configuration.

### 4. Qt Dependencies
**[troubleshooting/qt-dependencies.md](troubleshooting/qt-dependencies.md)**

SDK requires bundled Qt5 libraries, NOT system Qt5.

---

## Key Learnings

### Critical Discoveries:

1. **Linux has NO Canvas API**
   - Windows/Mac have Canvas API for SDK-rendered video
   - Linux MUST use Raw Data Pipe
   - See: [Raw Data vs Canvas](concepts/raw-data-vs-canvas.md)

2. **PulseAudio is MANDATORY**
   - SDK requires PulseAudio for raw audio
   - Must configure ~/.config/zoomus.conf
   - See: [PulseAudio Setup](troubleshooting/pulseaudio-setup.md)

3. **Use Bundled Qt5, NOT System Qt5**
   - SDK includes specific Qt5 versions
   - Copy from samples/qt_libs/
   - See: [Qt Dependencies](troubleshooting/qt-dependencies.md)

4. **Helpers Control YOUR Streams Only**
   - `videoHelper->startVideo()` starts YOUR camera
   - To see others, subscribe to their VideoPipe
   - See: [Singleton Hierarchy](concepts/singleton-hierarchy.md)

5. **Virtual Devices for Headless**
   - Docker/headless needs virtual audio speaker/mic
   - Set before joining session
   - See: [Session Join Pattern](examples/session-join-pattern.md)

6. **Always Use Heap Memory Mode**
   ```cpp
   init_params.videoRawDataMemoryMode = ZoomVideoSDKRawDataMemoryModeHeap;
  1. GLib Main Loop Required

    • while/sleep loops don't dispatch SDK events
    • Must use g_main_loop_run()
    • See: Common Issues
  2. All SDK Calls Must Be on Main Thread

    • Background thread SDK calls return error 2 (Internal_Error)
    • Use g_idle_add() to schedule on GLib main thread
    • See: Command Channel
  3. Command Channel is Session-Scoped

    • Does NOT span across different sessions
    • Both sender and receiver must be in the same session
    • See: Command Channel

Sample Repositories


Quick Reference

"My code won't compile"

Build Errors Guide

"Audio not working"

PulseAudio Setup

"Library not found"

Qt Dependencies

"How do I implement [feature]?"

SDK Architecture Pattern

"What error code means what?"

Common Issues


Document Version

Based on Zoom Video SDK for Linux v2.x


Happy coding!

Remember: The SDK Architecture Pattern is your key to unlocking the entire SDK. Read it first!

Operations

  • RUNBOOK.md - 5-minute preflight and debugging checklist.

同梱ファイル

※ ZIPに含まれるファイル一覧。`SKILL.md` 本体に加え、参考資料・サンプル・スクリプトが入っている場合があります。