详细描述
并行事件录像时长不正确,例如第0秒触发了事件1,第15秒触发了事件2,第30秒同时结束了事件1和事件2。n拉取的事件列表中事件1时长30秒,事件1视频时长30秒,事件2时长15秒,视频时长20秒。
原因分析
n如图所示,出于服务器负载等原因的考虑,目前 SDK 会将每10秒的视频分割为一个 ts 文件(或 ts 分片),ts 文件会在 I帧 处进行分割以免花屏,实际长度有一定波动。n例如:nfps=20,GOP=40帧,即每2秒一个 I帧,在第10秒时正好有一个 I帧,此时会分割一个 ts 文件。nfps=20,GOP=60帧,即每3秒一个 I帧,在第10秒时没有 I帧,因此会等到下一个 I帧,即第12秒处进行分割。上述问题服务器中实际保存了【0秒至10秒】,【11秒至20秒】,【21秒至30秒】的三个视频文件,当查找事件2的视频即15秒 - 30秒的视频时,服务器会返回起止时间在15秒到30秒范围内的所有视频分片,即【11秒至20秒】,【21秒至30秒】这两个视频分片,因此实际看到的事件2的视频时长为20秒。同理,假设在第9秒触发了事件3,在第21秒结束事件3,事件3的实际持续时间为12秒,对应的视频为【0秒至10秒】,【11秒至20秒】,【21秒至30秒】这三个视频。
解决方法
该问题不影响云存录像,如果需要视频时长精确匹配事件时长,可以通过播放器精确定位视频时间来实现。