Last Updated on : 2024-06-17 07:58:20download
The IPC SDK allows for displaying video from multiple cameras on a single screen by using a video splitting protocol for rendering, which relies on device support.
API description
Check if the device supports video splitting and return a Boolean value.
boolean isSupportVideoSegmentation();
Example
IThingIPCCore cameraInstance = ThingIPCSdk.getCameraInstance();
if (cameraInstance != null) {
ICameraConfigInfo cameraConfig = cameraInstance.getCameraConfig(deviceId);
return cameraConfig != null && cameraConfig.isSupportVideoSegmentation();
}
API description
Get the video splitting protocol and return the model ThingVideoSplitInfo
.
ThingVideoSplitInfo getCameraVideoSegmentationModel();
ThingVideoSplitInfo
Parameter | Description |
---|---|
total_split_num | The number of channels to split. |
split_info | An array of information about video splitting. |
split_info.index | The camera ID. |
split_info.type | The type of the video stream.
|
split_info.res_pos | The coordinates. |
align_info | (Optional) Video window alignment and localizer position. |
align_info.align_type | Video window alignment. Valid values:
|
align_info.align_group | The order of cameras. Use the camera ID from split_info.index to specify the order. A non-array element indicates one camera in a row, while nested arrays indicate multiple cameras arranged side by side in a row. |
align_info.localizer_group | The position with specific localizers split_info.index . Cross-column arrangement is not supported. |
Example
IThingIPCCore cameraInstance = ThingIPCSdk.getCameraInstance();
if (cameraInstance != null) {
ICameraConfigInfo cameraConfig = cameraInstance.getCameraConfig(deviceId);
if(cameraConfig != null && cameraConfig.isSupportVideoSegmentation()){
ThingVideoSplitInfo videoSplitInfo = cameraConfig.getCameraVideoSegmentationModel();
}
}
Specify the type of rendering view, which can be PTZ camera, bullet camera, or non-split view.
Invoke setType
after ThingCameraView.createVideoView.
void setType(int type);
Request parameters
Parameter | Description |
---|---|
type | The type corresponds to the split_info.type in the video splitting protocol.
|
Example
ThingVideoSplitInfo.SplitInfo splitInfo = mThingVideoSplitInfo.getSplit_info();
ThingCameraView mVideoView = findViewById(R.id.camera_video_view);
...
mVideoView.setType(splitInfo.getType());
API description
Bind the rendering view with a camera ID to specify the IPC to render.
Invoke setIndex
after ThingCameraView.createVideoView.
void setIndex(int index);
Request parameters
Parameter | Description |
---|---|
index | The camera ID, corresponding to the split_info.index in the video splitting protocol. |
Example
ThingVideoSplitInfo.SplitInfo splitInfo = mThingVideoSplitInfo.getSplit_info();
ThingCameraView mVideoView = findViewById(R.id.camera_video_view);
...
mVideoView.setIndex(splitInfo.getIndex());
ThingMultiCameraView
The ThingCameraView
-based multi-lens player supports four types of video window alignment. For dual-lens IPCs, you can arrange the double windows up and down or side by side. For three-lens IPCs, you can have one window at the top and two windows side by side below or two windows side by side at the top and one window below.
Example
IThingSmartCameraP2P mCameraP2P = null;
IThingIPCCore cameraInstance = ThingIPCSdk.getCameraInstance();
if (cameraInstance != null) {
mCameraP2P = cameraInstance.createCameraP2P(devId));
}
// Imported through the layout.
ThingMultiCameraView thingCameraView = new ThingMultiCameraView(context);
// Set the video splitting protocol.
thingCameraView.setThingVideoSplitInfo(videoSplitInfo);
// Set the width of the player.
thingCameraView.setCameraViewWidth(widthPixels);
thingCameraView.setViewCallback(new AbsVideoViewCallback() {
@Override
public void onCreated(Object view) {
super.onCreated(view);
// When the rendering view is created, bind IThingSmartCameraP2P with the rendering view.
if (null != mCameraP2P){
mCameraP2P.generateCameraView(view);
}
}
});
thingCameraView.createVideoView(devId);
The protocol defines conventions between the mobile app and the IPC. When developing with the SDK, contact your project manager for a suitable solution.
The example protocol below is intended for three-lens IPCs.
{
"total_split_num":3,
"split_info":[
{
"index":1,
"type":1,
"res_pos":[[0,0,640,720],[0,0,960,1080]]
},
{
"index":2,
"type":2,
"res_pos":[[0,720,640,720],[0,1080,960,1080]]
},
{
"index":3,
"type":2,
"res_pos":[[0,720,1280,720],[0,1080,1920,1080]]
}
],
"align_info":{
"align_type":32,
"align_group":[[1, 3],[2]],
"localizer_group":[1,3]
}
}
Is this page helpful?
YesFeedbackIs this page helpful?
YesFeedback