Tange Cloud for Device
 Rev.362
载入中...
搜索中...
未找到
云存完整性

设备端有有两个手段来(尽量)保存云存完整性:

  • 动态调低码流来适应网络不好的情况
  • 使用卡做为后备补录传不动的文件

1. 调整云存码流

SDK通过 STATUS_CS_QOS 状态通知应用调整云存质量。调整方式可以是调低或提升云存的bitrate, 或者在主码流和辅码流间切换。

应用可以在每个stream设置几个(2~3)不同的bitrate级别,收到SDK通知后就将相应stream的质量上调或下降一个级别。如果应用不处理(在on_status(STATUS_CS_QOS, ...)回调里返回0),SDK自动在主码流和辅码流间切换.

这个功能默认是关闭的,应用要调用 TciSetSysOption() 设置 TCOPT_ENABLE_ADJUSTMENT_FOR_CS 来开启本功能.

2. 云存储补录

补录功能使用SD卡来临时保存因网络问题或别的原因导致上传失败/推迟上传的录像、gps信息、报告等数据, 然后在条件合适时重新上传。

要使用补录功能,应用层要在 TciStart() 之前调用 TciSetBackStore(const char *sd_path, ECBUFFERHINT hint) 给sdk设置一个可写路径。

2.1 自动补录

录像索引、事件、gps信息、实时音视频和缓冲区可以容下的预录录像,这类数据 sdk会在需要时自动处理将数据写入 临时区域和从该区域上传,所有操作不需要应用层参与。

2.2 设备事件和平台定义补录

这两种情况的实录需要应用层参与.

2.2.1 设备事件补录

设备端发生的事件,sdk来不及记录或记录不了(例如行车记录仪的断电事件、内部缓冲区无法容纳的较长时间的预录录像等), 可以在事件过后通过下面的补录流程补传录像。
如果补录操作有对应的事件,还是需要在事件发生时调用 TciSetEventHandleOver2() / TciSetEventEx() 上报, 但不要调用 TciSetRecordStart()(这会在sdk内部开始上传).
目前sdk限制补录事件类型为上电、断电和冲撞三种事件。

2.2.2 平台定义补录

平台通过 TciCB::on_status(STATUS_SDER, ...) 回调通知设备上传指定时段录像到云端.

2.2.3 补录流程

  1. 调用 TciUduBegin2() 开启一个补录过程
  2. 循环调用 TciUduPutFrame() 写入录像帧
    • 通过自定义补录上传的录像时长,断电事件固件为30秒,碰撞事件最长60秒。超过时长 TciUduPutFrame() 返回 -1.
  3. 调用 TciUduEnd() 结束补录过程