SD卡回放时,APP会在时间轴上实时更新当前播放的时间。为使这个显示时间正确,设备至少应该在以下情形,向app报告下一帧数据的真实时间:
- 收到
PLAY_START
命令,执行了文件定位,开始发送数据时
- 当前文件播放结束,自动跑步到下一个文件开始播放时
- 其它原因导致时间戳不连续,app无法推算帧的正确发生时间时
报告方式为,设备向app发送一个帧, codec_id和
frame_size都为
0, timestamp
为下一个音频或视频帧的真实utc时间
typedef struct _FRAMEINFO
{
unsigned short codec_id;
unsigned char flags;
unsigned char cam_index;
unsigned char onlineNum;
unsigned char reserve1[3];
unsigned int frame_size;
unsigned int timestamp;
} FRAMEINFO_t;
设备端可以调用 TciSendPbSyncFrame() 来发送这个帧. 它被定义为一个宏
SD卡回放事件类型
在LISTEVENT_REQ
命令返回的列表项,SAvEvent的event
域取值定义如下(在ec_const.h里定义):
typedef enum {
...
ECEVENT_MAX
@ ECEVENT_HUMAN_BODY
[body] human body is detected (=2)
@ ECEVENT_SOUND
[sound] (=3)
@ ECEVENT_SMOKE
[smoke] (=5)
@ ECEVENT_TEMPERATURE_L
[tempL] temperature low(=6). 参数: MKEVTDATA_Temperatur()
@ ECEVENT_HUMIDITY_H
[humidH] humidity high(=9). 参数: MKEVTDATA_Humidity()
@ ECEVENT_MOTION_DETECTED
[motion] is detected (=1)
@ ECEVENT_TEMPERATURE_H
[tempH] temperature high(=7). 参数: MKEVTDATA_Temperatur()
@ ECEVENT_GENERIC_SENSOR
[generic] 通用传感器类消息 (=10)
@ ECEVENT_HUMIDITY_L
[humidL] humidity low(=8). 参数: MKEVTDATA_Humidity()