Force enable/disable video when join meeting

Description
I am integrating join meetings using Zoom Mac OS SDK. I am trying to find a function to enable/disable video while joining a meeting.
I have a custom UI for the join meeting screen where I ask the user to turn on/off the audio and video.

I found these functions for audio, you can review them.

sdk.getSettingService()?.getAudioSetting()?.enableAutoJoinVoip( **true** )
sdk.getSettingService()?.getAudioSetting()?.enableMuteMicJoinVoip(!audioOn)

Do we have something similar for the video as well? So far I have tried these functions but nothing seems to work.

sdk.getSettingService()?.getVideoSetting()?.enableCatchHDVideo( **true** )
sdk.getSettingService()?.getVideoSetting()?.disableVideoJoinMeeting(!videoOn)
sdkMeetingService?.getMeetingUIController()?.isShowVideoPreview(whenJoinMeeting: **false** )

Can you please let me know how can I achieve the intended behavior?

Which version?
v5.2.42037.1112

Some additional info here:

  1. audio and video settings of the user joining the meeting work as expected when the user hosting the meetings has these settings in his profile:

  1. video of the user joining the meeting is always OFF when the user hosting the meeting his these settings in his profile:

Screenshot 2020-12-12 at 17.35.48

What does it mean for us? Can the user who joins a meeting overwrite video settings of the user hosting the meeting? And how can we retrieve the setting that says the User who is joining hosting the meetings always wants me to join with video off?

Or did we get it all wrong? In this case what is overwriting the audio / video selection of the use joining a meeting and how can this be handled?

To pass on the audio / video options of he user joining a meeting we use these calls:

sdk.getSettingService()?.getAudioSetting()?.enableAutoJoinVoip( **true** )
sdk.getSettingService()?.getAudioSetting()?.enableMuteMicJoinVoip(!audioOn)
1 Like

Hi @j_a_z_z & @tmiskiew, thanks for the post.

To clarify, are you saying that enabling/disabling audio is working correctly, but doing the same for video is not?

sdk.getSettingService()?.getVideoSetting()?.enableCatchHDVideo( **true** )
sdk.getSettingService()?.getVideoSetting()?.disableVideoJoinMeeting(!videoOn)
sdkMeetingService?.getMeetingUIController()?.isShowVideoPreview(whenJoinMeeting: **false** )

Can you please let me know how can I achieve the intended behavior?

When are you calling these methods and what are you getting for the return values? Also if you could determine the value of this method and this method before and after changing these settings, they may provide useful information.

Can the user who joins a meeting overwrite video settings of the user hosting the meeting?

The settings of the meeting itself can only be changed by the host, however this does not prevent an individual user from controlling their own video.

Thanks!

Hey @jon .lieblich
Thanks for your response.
I added the logs in the code before and after setting the values. Please check them with function names and vlaue.

isCatchHDVideoOn: false
isMuteMyVideoWhenJoinMeetingOn: true
enableCatchHDVideo(true) result: Optional(__C.ZoomSDKError(rawValue: 3))
disableVideoJoinMeeting(false) result: Optional(__C.ZoomSDKError(rawValue: 0))
isCatchHDVideoOn: true
isMuteMyVideoWhenJoinMeetingOn: false

Code:

    print("isCatchHDVideoOn: \(sdk.getSettingService()?.getVideoSetting()?.isCatchHDVideoOn() ?? false)")
    print("isMuteMyVideoWhenJoinMeetingOn: \(sdk.getSettingService()?.getVideoSetting()?.isMuteMyVideoWhenJoinMeetingOn() ?? false)")
    joinMeetingCompletion = completion
    sdk.getSettingService()?.getAudioSetting()?.enableAutoJoinVoip(true)
    sdk.getSettingService()?.getAudioSetting()?.enableMuteMicJoinVoip(!audioOn)
    let hdResult = sdk.getSettingService()?.getVideoSetting()?.enableCatchHDVideo(true)
    let videoResult = sdk.getSettingService()?.getVideoSetting()?.disableVideoJoinMeeting(!videoOn)
    sdkMeetingService?.getMeetingUIController()?.isShowVideoPreview(whenJoinMeeting: false)

    print("enableCatchHDVideo(true) result: \(hdResult)")
    print("disableVideoJoinMeeting(\((!videoOn))) result: \(videoResult)")

    print("isCatchHDVideoOn: \(sdk.getSettingService()?.getVideoSetting()?.isCatchHDVideoOn() ?? false)")
    print("isMuteMyVideoWhenJoinMeetingOn: \(sdk.getSettingService()?.getVideoSetting()?.isMuteMyVideoWhenJoinMeetingOn() ?? false)")

Maybe it could be related to SDKError value 3, which says Service failed, but not sure what can cause it.
Can you please review the code and let me know if I need to add/change anything. So far, I am not able to get my Video meeting working.

Hi @j_a_z_z, thanks for the additional details.

It is strange to me that you are receiving this error when enabling HD video, but the property is still updated. Just to make sure we have all of our bases covered, can you confirm that your application is properly requesting the camera permission at runtime? If this is working properly, we will need to investigate this further internally.

Thanks!

Hey @jon.lieblich

Thanks for your response.
I don’t see any issues with the permissions, My app is enabled for both Mic and camera permissions in mac OS privacy & security settings.
Also, I have the values set in my app’s info.plist file.

Hey @jon.lieblich

Can you please help me one other critical topic.

Hi @j_a_z_z,

I don’t see any issues with the permissions, My app is enabled for both Mic and camera permissions in mac OS privacy & security settings.

Thank you for double checking that. We will look into this and let you know as soon as we have an update.

Can you please help me one other critical topic.

Yes, I have already responded in that thread. :slightly_smiling_face:

Thanks!

@jon.lieblich I don’t see any permission problem here. The situation is this: How to join internet audio? I hope you can enlighten us.

Hi @tmiskiew,

I believe this may be due to the meeting UI settings. Can you please let me know if the solution provided in your other post is not sufficient?

Thanks