Device (please complete the following information):
Device: [HP elite pad]
OS: [e.g. Windows 10]
This is code snippet used for rending all participants video
// Declare videoRenderer before the loop
ZOOM_SDK_NAMESPACE::IZoomSDKRenderer* videoRenderer = nullptr;
// Added for raw data access
// VIDEO portion
m_pParticipantsController = SDKInterfaceWrap::GetInst().GetMeetingService()->GetMeetingParticipantsController();
int participantCount = m_pParticipantsController->GetParticipantsList()->GetCount();
for (int i = 0; i < participantCount; i++) {
int participantID = m_pParticipantsController->GetParticipantsList()->GetItem(i);
// Create a separate video renderer for each participant
RawVideoDelegate* rawVideoDelegate = new RawVideoDelegate();
SDKError err2 = createRenderer(&videoRenderer, rawVideoDelegate);
if (err2 != SDKERR_SUCCESS) {
cout << "Error occurred";
// Handle error
}
else {
// Set the resolution for the video renderer
videoRenderer->setRawDataResolution(ZoomSDKResolution_1080P);
// Subscribe to the participant's raw video by their userID
videoRenderer->subscribe(participantID, RAW_DATA_TYPE_VIDEO);
// This will trigger callbacks in onRawDataFrameReceived(...) within RawVideoDelegate.cpp
}
}
}
Below code snippet used for naming raw video record file as output.participantid
//added for raw data access
void RawVideoDelegate::onRawDataFrameReceived(YUVRawDataI420* data)
{
cout << “onRawDataFrameReceived.” << endl;
cout << "width." << data->GetStreamWidth() << endl;
cout << "height." << data->GetStreamHeight() << endl;
// traditional method 1
int participantId = data->GetSourceID();
// Create a filename based on the participant's name.
std::string filename = "output" + std::to_string(participantId) + ".yuv";
“Yes, it includes the SDK, and it includes the video of one participant, but the video of another participant is not included. It only generates 2 files even though there are 3 participants(including the SDK).”
// Declare videoRenderer before the loop
ZOOM_SDK_NAMESPACE::IZoomSDKRenderer* videoRenderer = nullptr;
// Added for raw data access
// VIDEO portion
m_pParticipantsController = SDKInterfaceWrap::GetInst().GetMeetingService()->GetMeetingParticipantsController();
int participantCount = m_pParticipantsController->GetParticipantsList()->GetCount();
for (int i = 0; i < participantCount; i++) {
int participantID = m_pParticipantsController->GetParticipantsList()->GetItem(i);
// Create a separate video renderer for each participant
RawVideoDelegate* rawVideoDelegate = new RawVideoDelegate();
SDKError err2 = createRenderer(&videoRenderer, rawVideoDelegate);
if (err2 != SDKERR_SUCCESS) {
cout << "Error occurred";
// Handle error
}
else {
// Set the resolution for the video renderer
videoRenderer->setRawDataResolution(ZoomSDKResolution_1080P);
// Subscribe to the participant's raw video by their userID
videoRenderer->subscribe(participantID, RAW_DATA_TYPE_VIDEO);
// This will trigger callbacks in onRawDataFrameReceived(...) within RawVideoDelegate.cpp
}
}
}
this is the code snippet used for rending all paritcipants video present in meeting
@manikantarhong I don’t have the actual figures, but the guidelines are, the more user video you subscribe, you should proportionally reduce the size of video subscribed to.