Description
I am trying to send the raw video data and following the reference guide:
[https://marketplace.zoom.us/docs/sdk/video/android/advanced/raw-data#send-raw-video](https://Send Raw Data). I have implemented the ZoomVideoSDKVideoSource inferface and also passed the video source instance to the ZoomVideoSDKSessionContext by setting the externalVideoSource property of parameters. But onInitialize callback function is never get called as written in the reference guide.
Which Android Video SDK version?
zoom-video-sdk-android-1.1.2
To Reproduce(If applicable)
Please refer the description
Smartphone (please complete the following information):
Can you please provide code snippets from your project showing how you are setting up the session and video source so that we can investigate why you are not receiving this callback?
I am not using Zoom video SDK in my project. I am still evaluating it for my use case.
I am using this sample project bundled with the downloaded video SDK “zoom-video-sdk-android-1.1.2/Sample&Libs/mobilertc-android”.
You can easily reproduce the issue by following the below steps:
Paste below code in BaseSessionActivity class
ZoomVideoSDKVideoSource source = new ZoomVideoSDKVideoSource() {
@Override
public void onInitialize(ZoomVideoSDKVideoSender sender, List<ZoomVideoSDKVideoCapability> list, ZoomVideoSDKVideoCapability ZoomVideoSDKVideoCapability) {
System.out.println("sender:" + sender); // This line is not called during initialization
}
@Override
public void onPropertyChange(List<ZoomVideoSDKVideoCapability> list, ZoomVideoSDKVideoCapability ZoomVideoSDKVideoCapability) {
}
@Override
public void onStartSend() {
}
@Override
public void onStopSend() {
}
@Override
public void onUninitialized() {
}
};
Thanks for the additional information. I am seeing the onInitialize callback invoked 100% of the time. Are you sure that the instance of ZoomVideoSDKSessionContext is the same one that is being used to create the session?
Thanks for the response. I have checked again ZoomVideoSDKSessionContext instance is same. In sample project BaseSessionActivity class creating the instance of ZoomVideoSDKSessionContext and I am using the Zoom sample project only.
What steps are you taking in the sample app to try testing this? Are you certain that you are successfully joining a session when you aren’t seeing the callback?
In sample app code I set external video source to sessionContext.externalVideoSource = new DummyVideoSource(); in BaseSessionActivity class. Mentioned same above.
Using 2 mobiles for testing. Create the session on first mobile and join the same session on other mobile.
Session is joined successfully and I can see 2 participants on both mobile.
But onInitialize callback is not called for any of the sample app.
Can you please let me know the changes that you have done in sample app to invoke the onInitialize callback of ZoomVideoSDKVideoSource.
What is the DummyVideoSource you are referencing? Is that any different from the anonymous inner class mentioned in your earlier replies? I have implemented the same code as your reply here and am able to see the callback. Can you provide a diff of your changes in the sample app so that I can check why we are seeing different behavior? (Note: please ensure that your developer credentials are not included in this diff)
I just moved the above anonymous inner class mentioned code to DummyVideoSource.
I have uncommented the below block in BaseSessionActivity and this was causing the problem.
Issue is fixed by commenting the below block and now I am getting the onInitialize callback.
sessionContext.preProcessor= new ZoomVideoSDKVideoSourcePreProcessor() {
@Override
public void onPreProcessRawData(ZoomVideoSDKPreProcessRawData rawData) {
Bitmap bitmap=BitmapFactory.decodeResource(getResources(),R.drawable.zm_watermark_sdk);
WaterMarkData data=new WaterMarkData(bitmap.getWidth(),bitmap.getHeight(),YUVConvert.convertBitmapToYuv(bitmap));
YUVConvert.addWaterMark(rawData,data,20,20,true);
}
};