I need to know the video frame rate when a session is started and the host is the only participant in the session.
The sample app does not show the frame rate when only the host is present. It shows it as soon as a second person joins and the frame rate is that of the user. The frame rate is determined for each user separately using getVideoStatisticInfo
. For the host, that would be:
ZoomInstantSDK.getInstance().getSession().mySelf.getVideoStatisticInfo()?.fps
However, this always returnns 0 when only the host is in the session. I am recording the video frames from the raw data received in the onRawDataFrameReceived
callback. The frame rate is needed in order to encode the frames.
The only solution I can think of is to measure the time between two video buffers received in onRawDataFrameReceived
, although this is somewhat hacky because the time will vary. Maybe I can take an average of a dozen frames to get a close approximation.
There is an API called opPropertyChanged
that is a function of the ZoomInstantSDKVideoSource
interface. The sample app does use this interface in a class but that class is not even used in the sample and there is no documentation on how to use it. Even if it were documented, I doubt that it would provide the frame rate when the host is the only participant.
Please indicate how to obtain the frame rate when only the host is present. If there is no way of determining it other than with the solution I suggested, please add a property or function to the SDK to make this available. This obviously does exist internally since you are delivering the raw data at a fixed time interval.
The sample app uses a default value of 25 fps, but testing has shown that when only the host is present, this is 30 fps. Still, there needs to be a consistent and guaranteed way for the developer to know the frame rate without using some fixed value (unless of course you can guarantee that it will ALWAYS be 30 fps for the host).