Setting the file. One moment.
Subchapter 150.7
examples/cloud-recording.mdMarkdown9 KBView on GitHub
Complete working code for controlling cloud recording in sessions.
Official Sample: VSDK_CloudRecording in videosdk-windows-rawdata-sample (opens in a new tab)
Cloud recording saves session recordings to Zoom’s cloud storage. Features:
┌─────────────────────────────────────────────────────────────────┐
│ CLOUD RECORDING FLOW │
├─────────────────────────────────────────────────────────────────┤
│ 1. Check canStartRecording() │
│ 2. Start recording → startCloudRecording() │
│ 3. Handle consent → onCloudRecordingStatus() callback │
│ 4. Stop recording → stopCloudRecording() │
└─────────────────────────────────────────────────────────────────┘#pragma once
#include <windows.h>
#include "zoom_video_sdk_interface.h"
USING_ZOOM_VIDEO_SDK_NAMESPACE
class RecordingManager {
public:
RecordingManager(IZoomVideoSDK* sdk);
// Recording control
bool StartRecording();
bool StopRecording();
bool PauseRecording();
bool ResumeRecording();
// Status
bool CanStartRecording();
bool IsRecording() const { return m_isRecording; }
// Called from delegate
void OnRecordingStatus(RecordingStatus status,
IZoomVideoSDKRecordingConsentHandler* handler);
private:
IZoomVideoSDK* m_sdk;
IZoomVideoSDKRecordingHelper* m_recordingHelper;
bool m_isRecording;
};#include "RecordingManager.h"
#include <iostream>
RecordingManager::RecordingManager(IZoomVideoSDK* sdk)
: m_sdk(sdk)
, m_recordingHelper(nullptr)
, m_isRecording(false) {
}
bool RecordingManager::CanStartRecording() {
m_recordingHelper = m_sdk->getRecordingHelper();
if (!
class MyDelegate : public IZoomVideoSDKDelegate {
private:
RecordingManager* m_recordingManager;
public:
MyDelegate(IZoomVideoSDK* sdk) {
m_recordingManager = new RecordingManager(sdk);
}
void onSessionJoin() override {
// Start recording when session begins
if (m_recordingManager->CanStartRecording()) {
m_recordingManager->StartRecording();
}
}
void onSessionLeave() override {
// Stop recording before leaving
if (m_recordingManager->IsRecording()) {
m_recordingManager->StopRecording();
}
}
void onCloudRecordingStatus(RecordingStatus status,
IZoomVideoSDKRecordingConsentHandler* handler) override {
m_recordingManager->OnRecordingStatus(status, handler);
}
void onUserRecordingConsent(IZoomVideoSDKUser* user) override {
std::wcout << L"User gave recording consent: "
<< user->getUserName() << std::endl;
}
// ... other callbacks
};| Status | Description |
|---|---|
RecordingStatus_Start | Recording has started |
RecordingStatus_Stop | Recording has stopped |
RecordingStatus_Pause | Recording is paused |
RecordingStatus_Connecting | Connecting to recording service |
RecordingStatus_DiskFull | Recording stopped due to storage full |
When recording starts, participants may need to consent:
void onCloudRecordingStatus(RecordingStatus status,
IZoomVideoSDKRecordingConsentHandler* handler) override {
if (handler) {
// Options:
handler->accept(); // Accept recording
handler->decline(); // Decline (will leave session)
}
}| Method | Returns | Description |
|---|---|---|
canStartRecording() | ZoomVideoSDKErrors | Check if can start |
startCloudRecording() | ZoomVideoSDKErrors | Start recording |
stopCloudRecording() | ZoomVideoSDKErrors | Stop recording |
pauseCloudRecording() | ZoomVideoSDKErrors | Pause recording |
resumeCloudRecording() | ZoomVideoSDKErrors | Resume recording |
getCloudRecordingStatus() | RecordingStatus | Get current status |
Causes:
Fix: Check permissions and account settings
Cause: Session not fully joined
Fix: Wait for onSessionJoin before starting:
void onSessionJoin() override {
// Safe to start recording now
recordingManager->StartRecording();
}Cause: Consent not required for this session
Fix: This is normal - not all sessions require consent