I’m doing a test integration of the Zoom Video SDK to replace the Twilio Video SDK we’ve been using for years. I’ve noticed a bunch of issues I’d like to report.
JoinSession must be called on main thread or certain calls will respond with Errors_Call_Too_Frequently
The SDK doesn’t appear to be thread-safe at all. It would be nice to initialize things on a non-main thread.
Not much documentation on what the errors mean and when they are raised.
videoStatus().on not updated for some time after calling videoHelper.startVideo()/stopVideo()
It would be nice to add a completion block or make the startVideo() method async so we don’t need to depend on arbitrary timeout values to update the UI state.
No way to stop mute/unmute sound
The SDK makes a bloop sound when muting and unmuting. I don’t see a way to disable that.
Tons of threading errors. AVCapture not being called on bg thread while switchCamera() checks [UIApplication statusBarOrientation]
Starting and stopping video via AVCapture should be called on a bg thread but the SDK seems to call it on the same thread the startVideo/stopVideo methods are invoked on. I can’t force a BG thread because you seem to be touching UIApplication which requires the main thread.
No way to get reference to in-use camera
It would be nice to be able to tell which camera is the currently active one. I’ve worked around this by listening for the AVCaptureSessionDidStartRunning notification.
No way to know if SDK singleton was already initialized
The demo app sets up the singleton in the app’s delegate. I would like to set it up in my own framework and so it would be nice to have a method which states whether the instance has been initialized already. Something like isInitialized(). Also, calling cleanup seems to cause a crash (EXC_BAD_ACCESS).
In most of our method calls, there is usually a ZoomVideoSDKError return type to indicate if the call is successful or not. You can use this to update the local user changes such as video, audio and etc. We also have different callbacks available for these changes under the ZoomVideoSDKDelegate.
Regarding the bloop sound and clean-up crash, kindly send me the SDK logs for me to take a look. The steps on how to enable our SDK logs can be found here.
I will check with my team regarding your other feedback and let you know whenever there is an update through the same post here.
This list is a start but is incomplete. ZoomVideoSDKError contains 83 errors and I’ve encountered ones like Errors_Call_Too_Frequently which have no documentation.
Regarding the bloop sound and clean-up crash, kindly send me the SDK logs for me to take a look. The steps on how to enable our SDK logs can be found here.
I tried to get enableLog to write to a log file but when I export the container, it’s empty. As for the crash, here is a backtrace:
To reproduce, take the following steps
.initialize()
.cleanup()
.initialize()
// Check the local user’s video status
ZoomVideoSDK.shareInstance().getSession()?.getMySelf().getVideoPipe()?.videoStatus()?.on
The last call will access a pointer that wasn’t cleaned up before