上一篇我们分享了海康解码器SDK实时解码流程,如果大家有兴趣可以去阅读了解一下,海康解码器同时还能够解码远程文件,本文我们分享一下海康解码器SDK解码远程文件的流程。
登录解码器后需要先配置解码器显示通道参数,设置显示通道关联的解码通道,否则无法正常启动解码。
相关接口:NET_DVR_MatrixGetDisplayCfg_V41、NET_DVR_MatrixSetDisplayCfg_V41。
设置解码远程录像文件:首先通过 NET_DVR_RemoteControl(命令:NET_DVR_DEC_PLAY_REMOTE_FILE),设置按时间或者按文件名回放远程设备的录像文件,然后调用 NET_DVR_MatrixSetRemotePlayControl 启动解码。
流程代码如下:
//初始化 SDK
NET_DVR_Init();
//注册设备
NET_DVR_DEVICEINFO_V30 struDeviceInfo={0};
memset(&struDeviceInfo, 0, sizeof(NET_DVR_DEVICEINFO_V30));//存放设备参数的结构体
LONG lUserID = NET_DVR_Login_V30("172.6.22.178", 8000, "admin", "12345", &struDeviceInfo);
if (lUserID < 0)
{
printf("Login error, %d\n", NET_DVR_GetLastError());
NET_DVR_Cleanup();
return;
}
//获取解码器能力集
NET_DVR_MATRIX_ABILITY_V41 struDecoderCapability={0};
if (!NET_DVR_GetDeviceAbility(lUserID,MATRIXDECODER_ABILITY_V41,NULL,0,(char *)&struDecoderCapability,
sizeof(struDecoderCapability)))
{
printf("NET_DVR_GetDeviceAbility error, %d\n", NET_DVR_GetLastError());
NET_DVR_Logout(lUserID);
NET_DVR_Cleanup();
return;
}
else
{
printf("Starting number of decoding channel: %d\n",struDecoderCapability.byStartChan);
printf("The total number of VGA output: %d\n",struDecoderCapability.struVgaInfo.byChanNums);
printf("Starting number of VGA output: %d\n",struDecoderCapability.struVgaInfo.byStartChan);
for (i=0;i<MAX_DISPNUM_V41;i++)
{
if (struDecoderCapability.struDispMode[i].byDispChanType==1&&struDecoderCapability.struDispMode[i].byDispChanSeq==1)
{
//获取 VGA 1 输出支持的画面分割模式
for (j=0;j<MAX_WINDOWS_NUM;j++)
{
if (struDecoderCapability.struDispMode[i].byDispMode[j]>0)
{
byDispMode=struDecoderCapability.struDispMode[i].byDispMode[j];
printf("The VGA1 supports the window mode: %d screen(s)\n",byDispMode);
}
在TSINGSEE青犀视频开发的流媒体平台中,EasyNVR、EasyDSS都已经是成熟稳定的视频流媒体平台,可以直接下载测试,EasyRTC的重制版还正在开发当中,其架构有了新的方向,在不久之后新的版本也会上线和大家见面,TSINGSEE青犀视频云边端架构全平台都欢迎大家测试和了解。