# Multiple camera support Users can use both the front and back cameras of their Android mobile devices simultaneously using the methods provided by the Video SDK. Multiple cameras can also be used while screen sharing. Fore more information, see [ZoomVideoSDKVideoHelper Class Reference](https://marketplacefront.zoom.us/sdk/custom/android/interfaceus_1_1zoom_1_1sdk_1_1_zoom_video_s_d_k_video_helper.html). ## Support multiple cameras Get the device's available camera list and important information about each camera, including the - `deviceId` - `deviceName` - `isSelectDevice` - `isSelectedAsMultiCamera` - `isRunningAsMultiCamera` ```kotlin val cameraList = ZoomVideoSDK.getInstance().getVideoHelper().cameraList for (camera in cameraList) { // Each device contains deviceId, deviceName, isSelectDevice, isSelectedAsMultiCamera, isRunningAsMultiCamera and more. } ``` ```java List cameraList = ZoomVideoSDK.getInstance().getVideoHelper().getCameraList(); for (ZoomVideoSDKCameraDevice camera : cameraList) { // Each device contains deviceId, deviceName, isSelectDevice, isSelectedAsMultiCamera, isRunningAsMultiCamera and more. } ``` With the available camera list, the user can then use the `deviceId` to choose which camera they want to enable, disable, unmute (turn on), or mute (turn off). These methods will trigger the `onMultiCameraStreamStatusChanged` callbacks with different parameters under the [ZoomVideoSDKDelegate](https://marketplacefront.zoom.us/sdk/custom/android/interfaceus_1_1zoom_1_1sdk_1_1_zoom_video_s_d_k_delegate.html). ```kotlin // To enable/disable multi video stream for a camera given its deviceID val enableBOOLResult = ZoomVideoSDK.getInstance().getVideoHelper().enableMultiStreamVideo("cameraDeviceID", null) val disableBOOLResult = ZoomVideoSDK.getInstance().getVideoHelper().disableMultiStreamVideo("cameraDeviceID") // Enable/Disable will trigger the 2 onMultiCameraStreamStatusChanged callback under ZoomVideoSDKDelegate override fun onMultiCameraStreamStatusChanged( status: ZoomVideoSDKMultiCameraStreamStatus?, user: ZoomVideoSDKUser?, videoPipe: ZoomVideoSDKRawDataPipe? ) { // Getting ZoomVideoSDKRawDataPipe } override fun onMultiCameraStreamStatusChanged( status: ZoomVideoSDKMultiCameraStreamStatus?, user: ZoomVideoSDKUser?, canvas: ZoomVideoSDKVideoCanvas? ) { // Getting ZoomVideoSDKVideoCanvas } // To mute (turn off) / unmute (turn on) the multi video stream given its deviceID val muteBOOLResult = ZoomVideoSDK.getInstance().getVideoHelper().muteMultiStreamVideo("cameraDeviceID") val unmuteBOOLResult = ZoomVideoSDK.getInstance().getVideoHelper().unmuteMultiStreamVideo("cameraDeviceID") ``` ```java // To enable/disable multi video stream for a camera given its deviceID Boolean enableBOOLResult = ZoomVideoSDK.getInstance().getVideoHelper().enableMultiStreamVideo("cameraDeviceID", null); Boolean disableBOOLResult = ZoomVideoSDK.getInstance().getVideoHelper().disableMultiStreamVideo("cameraDeviceID"); // Enable/Disable will trigger the 2 onMultiCameraStreamStatusChanged callback under ZoomVideoSDKDelegate @Override public void onMultiCameraStreamStatusChanged(ZoomVideoSDKMultiCameraStreamStatus status, ZoomVideoSDKUser user, ZoomVideoSDKRawDataPipe videoPipe) { // Getting ZoomVideoSDKRawDataPipe } @Override public void onMultiCameraStreamStatusChanged(ZoomVideoSDKMultiCameraStreamStatus status, ZoomVideoSDKUser user, ZoomVideoSDKVideoCanvas canvas) { // Getting ZoomVideoSDKVideoCanvas } // To mute (turn off) / unmute (turn on) the multi video stream given its deviceID Boolean muteBOOLResult = ZoomVideoSDK.getInstance().getVideoHelper().muteMultiStreamVideo("cameraDeviceID"); Boolean unmuteBOOLResult = ZoomVideoSDK.getInstance().getVideoHelper().unmuteMultiStreamVideo("cameraDeviceID"); ``` To find the `deviceId` in the raw data of the multi camera pipe or canvas, use the `getDeviceIDByMyPipe` or `getDeviceIDByMyCanvas` methods. For more information about handling raw data, see [Raw data](/docs/video-sdk/Android/raw-data/). ```kotlin val localUser = ZoomVideoSDK.getInstance().session.mySelf // Get the user's multi camera stream - ZoomVideoSDKRawDataPipe val pipeList = localUser.multiCameraStreamList for (pipe in pipeList) { val deviceID = ZoomVideoSDK.getInstance().getVideoHelper().getDeviceIDByMyPipe(pipe) } // Get the user's multi camera canvas - ZoomVideoSDKVideoCanvas val canvasList = localUser.multiCameraCanvasList for (canvas in canvasList) { val deviceID = ZoomVideoSDK.getInstance().getVideoHelper().getDeviceIDByMyCanvas(canvas) } ``` ```java ZoomVideoSDKUser localUser = ZoomVideoSDK.getInstance().getSession().getMySelf(); // Get the user's multi camera stream - ZoomVideoSDKRawDataPipe List pipeList = localUser.getMultiCameraStreamList(); for (ZoomVideoSDKRawDataPipe pipe : pipeList) { String deviceID = ZoomVideoSDK.getInstance().getVideoHelper().getDeviceIDByMyPipe(pipe); } // Get the user's multi camera canvas - ZoomVideoSDKVideoCanvas List canvasList = localUser.getMultiCameraCanvasList(); for (ZoomVideoSDKVideoCanvas canvas : canvasList) { String deviceID = ZoomVideoSDK.getInstance().getVideoHelper().getDeviceIDByMyCanvas(canvas); } ```