Multiple camera support

View as Markdown

Users can run more than one camera at the same time using the methods provided by the Video SDK for macOS. Multiple cameras can also be used while screen sharing.

To enumerate the available cameras and read each camera's deviceID, see Get the camera list.

Enable or disable a multi-camera stream

Pass a deviceID from the camera list to enable or disable that camera as an additional stream. You can supply a custom display name when enabling. Both calls fire onMultiCameraStreamStatusChanged. For more information, see Multi-camera stream status.

let videoHelper = ZMVideoSDK.shared()?.getVideoHelper()
let enableResult = videoHelper?.enableMultiStreamVideo("cameraDeviceID", customDeviceName: nil)
let disableResult = videoHelper?.disableMultiStreamVideo("cameraDeviceID")

Mute or unmute a multi-camera stream

Mute or unmute an active multi-camera stream by its deviceID.

let videoHelper = ZMVideoSDK.shared()?.getVideoHelper()
let muteResult = videoHelper?.muteMultiStreamVideo("cameraDeviceID")
let unmuteResult = videoHelper?.unmuteMultiStreamVideo("cameraDeviceID")

Map a pipe back to a device ID

The local user's multi-camera streams are exposed as ZMVideoSDKRawDataPipe objects through getMultiCameraStreamList. To find the deviceID for a given pipe, use getDeviceIDByMyPipe. For more on handling raw data, see Raw data.

if let localUser = ZMVideoSDK.shared()?.getSession()?.getMySelf(),
   let pipeList = localUser.getMultiCameraStreamList() {
    let videoHelper = ZMVideoSDK.shared()?.getVideoHelper()
    for pipe in pipeList {
        let deviceID = videoHelper?.getDeviceIDByMyPipe(pipe)
    }
}