Problem recording screen in custom UI mode

I’m having trouble recording the screen in custom UI mode, and there are two potential issues, neither of which I can figure out. First is that startRecording is failing with ZoomSDKError_InvalidPrameter. I figured this is probably the timestamp, so I’ve tried numerous approaches to the timestamp with no luck. Here’s my Swift code (captureMovieFilePath is a full string local file path):

var time: time_t = Int(Date().timeIntervalSince1970)

let error = recordController.startRecording(&time, saveFilePath: captureMovieFilePath)

The other problem I’m having that makes me suspicious of the prior problem is this:

ZoomSDKError allowRecordingSupported = [[[[ZoomSDK sharedSDK] getMeetingService] getRecordController] allowLocalRecording:TRUE User:currentUser.userID];

That call is returning ZoomSDKError_NoPermission. Please ignore the mixing of Swift and Objective-C, this is a mixed project. I am the host and only participant in this meeting, so I don’t understand how I lack recording permission or fail giving myself permission. In OSX prefs I’ve already enabled screen recording for this app by the way. One more method call in case this helps:

ZoomSDKError isSupportLocalRecording = [[[[ZoomSDK sharedSDK] getMeetingService] getRecordController] isSupportLocalRecording:currentUser.userID];

That one is successful.

So in summary: isSupportLocalRecording is successful, allowRecordingSupported says no permission, and startRecording says invalid parameter. I’m kind of at a loss for what else to change, so any help would be greatly appreciated.

Which version?

Hi @stalefishlabs, thanks for the post.

Sorry to hear you’re running into these issues when trying to set up recording. Before we get started on debugging your implementation, let’s first confirm that you have properly setup local recording for your account by following the steps outlined here.

Once you have confirmed that the correct steps to enable recording have been followed, we can try to determine whether or not there is an issue within your implementation itself.


Hello, Any news regarding this issue ? Im facing the same problem, find my code below :

-(void)startRecord {
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

time_t timeStamp = [[NSDate date] timeIntervalSinceNow];
ZoomSDKMeetingRecordController *record = [[[ZoomSDK sharedSDK] getMeetingService] getRecordController];
[record setDelegate:self];
ZoomSDKError canStartRecording = [record canStartRecording:NO];
if (canStartRecording == ZoomSDKError_Success) {

ZoomSDKError isSupportLocalRecording = [record isSupportLocalRecording:self.mySelfUserInfo.getUserID];
if (isSupportLocalRecording == ZoomSDKError_Success) {

ZoomSDKError allowRecordingSupported = [record allowLocalRecording:YES User:self.mySelfUserInfo.getUserID];
if (allowRecordingSupported == ZoomSDKError_Success) {

[record startRecording:&timeStamp saveFilePath:documentsDirectory];
ZoomSDKError error = [record requestCustomizedLocalRecordingNotification:YES];
if (error == ZoomSDKError_Success) {


  • (void)onRecord2MP4Done:(BOOL)success Path:(NSString *)recordPath {
    if (success) {
    NSString *filePath = [NSString stringWithFormat:@"%@meetingrec_0.mp4",recordPath];

      NSURL *url = [NSURL fileURLWithPath:filePath];
      NSData *data = [NSData dataWithContentsOfURL:url];
      ZoomSDKMeetingService* meetingService = [[ZoomSDK sharedSDK] getMeetingService];
      [meetingService leaveMeetingWithCmd:(LeaveMeetingCmd_End)];


  • (void)onCustomizedRecordingSourceReceived:(CustomizedRecordingLayoutHelper *)helper {
    ZoomSDKError error = [helper selectShareSource:RecordingLayoutMode_VideoWall];
    if (error == ZoomSDKError_Success) {

    ZoomSDKError error2 = [helper selectActiveVideoSource];
    if (error2 == ZoomSDKError_Success) {

    NSArray users = [[[[ZoomSDK sharedSDK] getMeetingService] getMeetingActionController] getParticipantsList];
    for (NSNumber
    userID in users)
    ZoomSDKError error3 = [helper addVideoSourceToResArray:userID.unsignedIntValue];
    if (error3 == ZoomSDKError_Success) {

I was able to record the audio but the video is a black screen.

Hi @hkr.noel, thanks for using the dev forum.

Sorry to hear that you are also experiencing issues with recording. Can you please provide the SDK logs so that we may investigate this further? You can send the logs over to and mention this thread.