本 SDK 仅适用于过去 3 年内发布的设备。我们定期优化和更新 SDK，以确保兼容性和性能。对于超过 3 年的旧设备，我们不保证兼容性，也不会提供技术支持。

# 常见问题解答

Q1 获取报警的方式及调用方法？

所谓布防就是SDK主动连接设备，并发起报警上传命令，设备一旦发生报警立即发送给SDK。因此，除了配置报警输入信息和设备回调函数以外，还需要调用`NET_SDK_SetupAlarmChan`接口建立SDK与设备的连接。

Q2 报警配置成功后，设备本地能收到报警信号，客户端为什么收不到报警信号？

导致客户端接收不到报警信息的原因如下：

1. 网络连接是否正常

2. 当报警模式为布防时，是否已经正确设置布防。

Q3 为什么调用 `NET_SDK_SetDVRConfig`时返回失败？

在调用`NET_SDK_SetDVRConfig`之前需要先调用`NET_SDK_EnterDVRConfig`锁定配置。

Q4 使用 `NET_SDK_SetDVRConfig`配置参数要注意什么？

因为`NET_SDK_SetDVRConfig`需要输入完整赋值的结构体，否则容易导致设置出错。所以为了避免这个问题，一般地，在调用`NET_SDK_SetDVRConfig`设置之前先调用`NET_SDK_GetDVRConfig`给需要修改的结构体赋一个初始值，在此基础上修改对应参数，最后再调用`NET_SDK_SetDVRConfig`。

Q5 为什么 `NET_SDK_PlayBackByTime`需要传入一组通道号？

传入一组通道进行回放时，这一组通道会自动同步播放；同时把通道按组播放，而不是单独播放，可以节约设备端的性能。

Q6 在录像数据检索、回放、下载时，为什么出现时间与设备端不一致？

当出现这种与设备端时间不一致的情况时，首先检查下设备时区与PC机时区是否一致，然后再检查时间是否一致。

Q7 为什么回放和下载时视频的开始时间与设定的开始时间不一样？

按时间回放和下载是从设定的开始时间附近的一个关键帧开始下载的。

Q8 `NET_SDK_PTZControl` 发送控制命令，为什么对某些云台无效？

设备会根据目前设置的解码器类型和解码器地址向云台发送控制码，如果目前设置的解码器不匹配，则需要在设备端设置相应的解码器，如果设备不支持该解码器，则无法用这几个接口来控制云台。

Q9 语音对讲和转发是针对设备还是通道？

语音对讲和转发是针对设备并非通道，因此决定与该设备的语音对讲和转发的最大路数并不是由设备的通道数决定。

Q10 语音对讲的回调函数是否可以设置为 NULL？

可以，这样做语音依然正常，但是用户无法自行处理数据。

Q11 如何保存录像文件?

通过`NET_SDK_SetLiveDataCallBack`的回调函数`LIVE_DATA_CALLBACK`获得数据后，再把数据保存到文件中，这个过程的代码示例在SDKdemo的 livedlg类里面有，1170行后面即是将数据保存到文件中的过程。回调得到的数据可用于播放器播放。

Q12 获取文件播放进度?

`NET_SDK_PlayBackByTime`接口可以获得播放文件的开始和结束时间，从而算出文件的总时长，`NET_SDK_GetPlayBackOsdTime`可以获得当前播放到的时间，播放进度=当前播放时间/播放文件总时长

Q13 播放器 DEMO 报配置错误或是 0XC0150002 错误，运行不成功?

报配置错误的解决办法：在机器上安装VS2005的runtime组件，去msdn官网上可以下载到这个组件；报0XC0150002错误的解决办法：下个vc的运行库 Microsoft Visual C++ 2005 SP1 Redistributable Package4安装试试。

Q14 搜索文件回放时快退?

SDKDEMO中搜索文件回放时2X和4X快退没效果，快进时选择除1X之外的速度都有效，但快退时只能选择8X，6X和32X的速度才有效。单帧回放按钮需要先暂停，然后点击一次单帧回放按钮就播放一帧。在SDK中也没有实现2X和4X快退。

Q15 `DD_TIME` 中的 wday 值的填写?

`NET_SDK_FindFile`中，开始时间是`DD_TIME`类型的，`DD_TIME`中的wday的值目前是无效的，可以不填，但不能去掉，不填的话根据mday查找即可。如果需要根据wday查找的话，就需要自己写函数将时间推算为周几。

Q16 保存的录像文件用播放器播放时报文件格式错误?

确认以下4点：

1. 保存的录像文件第一帧是格式帧是40个字节，加上frameinfo的20个字节是60个字节；

2. SDK中所有的结构体都是4字节对齐的；

3. 接口调用的顺序是否正确；

4. sdk播放的文件必须是这个样子的：

   \* 帧信息（`NET_SDK_FRAME_INFO`）帧有效负载数据

   \* 帧信息（`NET_SDK_FRAME_INFO`）帧有效负载数据

   \* ......

   \* 帧信息（`NET_SDK_FRAME_INFO`）帧有效负载数据

   \* ......

   \* 并且视频信息帧应在视频帧之前，音频信息帧应在音频帧前和dvr备份的应该不同

错误码