本文档主要介绍Link Visual的常用功能在控制台上定义的物模型,以及设备端与App端的工作流程。

直播功能开发

直播视频支持H264/H265,音频支持G711A/AAC_LC。采用RTMP云转+P2P混合方式,在保证直播稳定性的同时降低成本。

开发直播功能时,您需要配置的物模型如下。

标识符 功能类型 功能名称 描述 控制台勾选 开发指南
StartPushStreaming 服务 开始直播 通知设备开始直播RTMP推流,当有播放端观看或者需要做云存录制时触发,同一码流已有推流则不再触发 该物模型无需额外开发
StopPushStreaming 服务 停止直播 通知设备停止直播RTMP推流 该物模型无需额外开发
StartP2PStreaming 服务 开始P2P直播 通知设备开始P2P直播 该物模型无需额外开发
EncryptTypeList 属性 加密类型列表 设备端上报支持的加密类型 该物模型无需额外开发
StreamVideoQuality 属性 主码流视频质量 用于做主码流清晰度切换,要求开机及状态变更时上报 按需 App和设备开发者需要关注并处理该物模型
SubStreamVideoQuality 属性 辅码流视频质量 用于做辅码流清晰度切换,要求开机及状态变更时上报 按需 App和设备开发者需要关注并处理该物模型
EncryptSwitch 属性 加密开关 加密开关,建议设备实现时默认开启,要求开机及状态变更时上报 App和设备开发者需要关注并处理该物模型
  • 视频播放

    Link Visual App SDK提供直播播放器,集成请参见Android Link Visual App SDKiOS Link Visual App SDK

  • P2P支持

    P2P支持需要同时接入Link Visual Device SDK和Link Visual App SDK。播放时会尽可能的尝试P2P连接,以减小成本开销。后台会对P2P的成功率进行统计,发现P2P成功率出现异常会通知开发者检查原因,若不修复有可能拒绝服务。

    App端P2P依赖生活物联网平台的长连接通道,需要App初始化长连接通道SDK,并完成长连接通道与账号绑定。请参见Android长连接SDKiOS长连接SDK

    • 确认设备端P2P是否集成成功

      设备端SDK集成完毕后,确保云智能App(开发版)和IPC设备连在同一个WiFi下,将云智能App(开发版)的测试信息开关打开后,进入直播页面,左上角RELAY代表RTMP云转,LOCAL代表P2P直连(局域网直连),SRFLX代表P2P穿透(公网穿透)。

      直播页面
    • 确认自有App P2P是否集成成功

      在首帧后5S,调用播放器的播放功能,获取播放器当前流的连接类型接口,来获取当前流类型。如RELAY代表RTMP云转;LOCAL代表P2P直连;SRFLX代表P2P穿透。

  • 视频加密

    为保证视频数据安全,SDK支持对音视频帧的加密,推荐App端开启全链路加密。App端可调用物模型API(Android/iOS)设置物模型属性(EncryptSwitch)开启或关闭加密。

  • 清晰度切换

    App端可通过调用物模型API(Android/iOS)查询主辅码流清晰度物模型属性(StreamVideoQuality/SubStreamVideoQuality)用于UI上展示当前播放码流清晰度,App端设置该物模型属性来改变码流清晰度,设备收到物模型属性设置后,切换码流清晰度重新推流,播放器SDK已支持码流自适应。

  • 截图和录屏

    播放器SDK提供了截图和录屏接口,详细参见Android Link Visual App SDKiOS Link Visual App SDK

  • 减少首帧延迟(强制I帧)

    在有新的播放端观看时,会要求设备立即编码I帧,从而减少直播首帧延迟。参考设备端和App的文档响应和发起强制I帧。

云存录像功能开发

云存录像的使用需要为用户开通云存空间,详细参见LinkVisual视频云存储购买服务

  • 介绍
    云存录像来源有以下三种。
    • 计划录像

      摄像头会在指定时间录像到云端保存。

    • 事件联动录像

      在指定时间段内,当摄像头触发报警时,摄像头将上传到云端保存。

    • 主动录像

      App调用对应接口,可以让设备推送指定时长的录像到云端。

  • 计划开发

    当前主要有两种方式:1.配置云端录像计划,配置摄像头报警通知时段(不推荐,会增加用户理解成本);2.使用默认云端录像配置计划,配置摄像头报警通知时段。当前云端录像配置的默认计划为7x24小时。如下是配置云端录像计划的方式(根据产品的云端录像类型选择进行实现)。

    • 配置录像计划

      为设备配置录像计划的一般步骤为:

      1. 创建录像计划,得到planId
      2. 将planId与设备iotId绑定

      如配置/更新/解绑/删除/查询等,查看Link Visual视频服务

    • 配置事件联动录像计划

      为设备配置录像计划的一般步骤为:

      1. 创建事件联动录像计划,得到planId
      2. 将planId与设备iotId绑定

      更多接口如配置/更新/解绑/删除/查询等,查看Link Visual视频服务

  • 获取云存录像播放地址

    有几种途径获取云存录像播放地址:

    • 根据时间范围查询云存的录像列表, 按文件名获取云存录像点播地址。
    • 根据时间范围获取事件列表,依据事件关联录像文件名获取事件联动云存录像点播地址。
  • 播放云存录像

    云存录像使用HLS作为流媒体播放协议。

    • Android Link Visual App SDK提供基于ExoPlayer封装的ExoHlsPlayer用于HLS流播放。
    • iOS SDK提供基于AVFoundation封装的IMSLinkVisualHLSPlayer用于HLS流播放。
  • 云存录像下载

    支持云存录像下载后播放,查看Link Visual视频服务

  • 视频加密

    云存录像默认开启AES-128加密。

设备录像点播功能开发

一般IPC设备会配备独立的大容量存储介质,用于不间断记录摄像头捕捉的视频内容,这部分录像不适合上云,因此在后期对录像做回溯时需要用到设备录像点播功能。

开发设备录像点播功能时,您需要配置的物模型如下。

标识符 功能类型 功能名称 描述 控制台勾选 开发指南
StartVodByTime 服务 按时间方式开始观看录像 通知设备开始点播RTMP推流 该物模型无需额外开发
QueryRecordTimeList 服务 查询录像时间列表 App发起并由设备端响应查询请求,返回指定查询时间区间内有录像内容的时间段列表 App和设备开发者需要关注并处理该物模型
StartVod 服务 按单个文件方式开始观看录像 通知设备开始点播RTMP推流 该物模型无需额外开发
QueryRecordList 服务 查询录像文件列表 App发起并由设备端响应查询请求,返回指定查询时间区间内有录像内容的文件列表 App和设备开发者需要关注并处理该物模型
QueryMonthRecord 服务 查询某月有录像的天信息 App发起并由设备端响应查询请求,返回指定月份哪些天有录像数据 App和设备开发者需要关注并处理该物模型
EncryptSwitch 属性 加密开关 加密开关,建议设备实现时默认开启,要求开机上报 App和设备开发者需要关注并处理该物模型
FormatStorageMedium 服务 格式化存储介质 App发起并由设备端响应格式化存储介质 按需 App和设备开发者需要关注并处理该物模型
StorageRecordMode 属性 存储介质录像模式 App可设置当前设备存储介质录像模式为(不录像/事件录像/全天录像),要求开机上报 按需 App和设备开发者需要关注并处理该物模型
StorageStatus 属性 存储介质状态 App可获取当前设备存储介质状态,要求设备开机及存储介质状态变更时上报 App和设备开发者需要关注并处理该物模型
StorageRemainCapacity 属性 剩余存储空间 App可获取当前设备存储介质状态,要求设备开机及存储介质状态变更时上报 按需 App和设备开发者需要关注并处理该物模型
StorageTotalCapacity 属性 总存储空间 App可获取当前设备存储介质状态,要求设备开机及存储介质状态变更时上报 按需 App和设备开发者需要关注并处理该物模型
  • 按单个文件方式点播

    实现对设备本地单个录像文件的点播回放功能,分为以下几步。

    1. App端调用物模型服务(QueryRecordList)获取某个时间段的设备端录像文件列表。
    2. 设备端响应物模型服务(QueryRecordList),查询完毕并将结果返回给App展示。
    3. 用户选中列表的某一文件播放,App端调用API接口(按文件名获取播放)来播放录像。
    说明
    • 物模型服务(QueryRecordList)返回结果有大小限制,App端查询设备端录像文件列表时需要做分页查询,每页建议10条数据。
    • 设备端响应物模型服务(QueryRecordList)必须在3S内查询完毕,否则会触发超时导致查询失败。
    • 按单个文件方式点播模式下,获取播放文件长度为该文件的实际长度。
    • 按单个文件方式点播模式下,如果播放到文件末尾,则设备端显式发出推流结束指令告知App播放完毕,但不断开连接允许再次seek。
    • 按单个文件方式点播模式下,seek命令,App发送相对于文件开始的相对时间偏移,单位秒。
  • 按时间段方式点播

    有些设备存储在本地的录像文件是按固定时间拆分的单个小文件。例如1分钟一个文件,拉取一天的录像列表会非常大,并且单个文件的请求播放实现上很不友好。对于这种存储方式,按照单个文件点播方式并不适用,因此提供了按时间段方式点播,设备端SDK会对时间相邻的小文件做合并,将起止时间段内的部分作为一个大文件播放,同时允许播放中起止时间段内任意位置可seek,实现分为以下几步。

    1. App调用物模型服务(QueryRecordTimeList)获取某个时间区间(一般为1天)内哪些时间段有录像。
    2. 设备端响应物模型服务(QueryRecordTimeList),查询完毕将结果返回给App展示。
    3. App调用API接口(按时间请求本地录像播放)来播放录像,默认连接建立后从时间区间的第一个时间段开头开始播放,如需要做偏移,可在发起请求时指定seekTime来做初始偏移。
    说明
    • 物模型服务(QueryRecordTimeList)返回结果有大小限制,App端查询设备端录像文件列表时需要做分页查询,每页建议10条数据。
    • 设备端响应物模型服务(QueryRecordTimeList)必须在3S内查询完毕,否则会触发超时导致查询失败。
    • 按时间段方式点播模式下,设备端默认开启连续播放,即一段录像文件播放完毕后,自动开始下个文件的推流。若App端需要实现非连续播放的时间轴设备录像效果,推荐使用单个文件方式点播模式来实现。
    • 按时间段方式点播模式下,若seek指令下发的时间偏移量上无视频内容,则设备端SDK默认实现向后寻找到接下来最近的视频内容起始点开始推流。
    • 按时间段方式点播模式下,如果APP下发seek时间后无录像,设备端显式发出推流结束指令告知App播放完毕,但不断开连接允许再次seek。
    • 按时间段方式点播模式下,获取播放文件长度为发起播放请求时的起止时间端(endTime-beginTime)的时长。
    • 按时间段方式点播模式下,seek命令,APP发送相对于BeginTime的相对时间偏移,单位秒。
    点播流程
  • 设备推流

    与直播类似,设备推流速率应不小于内容原始生成速率,建议略快于内容原始生成速率,1.1倍左右。当播放端接收缓存水位超过75%时会通知设备暂停推流,直到播放端缓存水位低至25%时重新通知设备继续推流,因此设备应响应暂停/恢复指令。除此之外设备还需要响应文件seek操作,为了较精确的响应seek位置,录像文件GOP不宜设置过大。

  • 倍速播放

    暂时还未支持

  • 点播播放器

    较于直播播放器点播播放器增加暂停/恢复、跳至指定位置播放、获取总时长、获取当前时长接口,请参见Link Visual视频服务

语音对讲功能开发

提供App和IPC设备之间端到端的实时音频传输能力。支持音频格式包括:G711a/G711u/AAC_LC/PCM。

对讲由App端发起,由设备端响应,集成过程详见Link Visual视频服务LinkVisual视频设备开发概览

开发语音对讲功能时,您需要配置的物模型如下。

标识符 功能类型 功能名称 描述 控制台勾选 开发指南
StartVoiceIntercom 服务 开始语音对讲 通知设备开始语音对讲 该物模型无需额外开发
StopVoiceIntercom 服务 停止语音对讲 通知设备停止对讲 该物模型无需额外开发
  • 对讲模式
    对讲模式 设备端 App 依赖
    双向实时对讲 实时收发音频 实时收发音频 设备需要MIC和Speaker,设备和App均需要支持回声消除
    单向实时对讲 实时收音频 实时发送音频 设备需要Speaker
  • 链路加密

    为确保数据安全,默认启用AES-128全帧加密。

事件上报功能开发

提供设备事件上报的能力,用于侦测报警及故障上报等功能。服务端处理事件最小时间间隔为10秒,过频的事件上报不会被处理。

开发事件上报功能时,您需要配置的物模型如下。

标识符 功能类型 功能名称 描述 控制台勾选 开发指南
AlarmEvent 事件 报警事件 设备主动上报事件如移动侦测/声音侦测等事件的上报 App和设备开发者需要关注并处理该物模型
AlarmSwitch 属性 报警开关 App设置和获取设备当前报警开关状态,若关闭则设备不开启所有报警事件上报,设备在状态变更及开机时主动上报 App和设备开发者需要关注并处理该物模型
AlarmNotifyPlan 属性 报警提醒计划 App设置和获取设备当前报警计划,定义设备何时开启报警提醒,设备在状态变更及开机时主动上报 App和设备开发者需要关注并处理该物模型
AlarmFrequencyLevel 属性 报警频率 App设置和获取设备当前报警频率,设备在状态变更及开机时主动上报 App和设备开发者需要关注并处理该物模型
MotionDetectSeneitivity 属性 移动侦测灵敏度 App设置和获取设备当前设置的移动侦测灵敏度,设备在状态变更及开机时主动上报 按需 App和设备开发者需要关注并处理该物模型
VoiceDetectionSensiticity 属性 声音侦测灵敏度 App设置和获取设备当前设置的声音侦测灵敏度,设备在状态变更及开机时主动上报 按需 App和设备开发者需要关注并处理该物模型
Error 事件 故障事件 设备主动上报故障事件 按需 App和设备开发者需要关注并处理该物模型

抓图功能开发

开发抓图功能时,您需要配置的物模型如下。

标识符 功能类型 功能名称 描述 控制台勾选 开发指南
TriggerPicCapture 服务 触发设备抓图 通知设备抓图并上报到给定URL 该物模型无需额外开发
  • 主动抓图

    由App端主动通知设备抓图,流程如下。

    1. App调用Link Visual API(主动抓图)通知设备抓图。
    2. 设备响应物模型服务(TriggerPicCapture)调用,触发抓图,并将图片通过HTTP POST方式上传至给定URL。
  • 事件关联抓图

    由设备主动上报报警事件,并联动触发抓图,流程如下。

    1. 设备侦测到报警,抓取图片,生成图片ID,上报该报警事件
    2. 服务端接收报警事件,并触发设备物模型服务(TriggerPicCapture)
    3. 设备响应物模型服务(TriggerPicCapture)调用,将已抓取的对应图片ID图片通过HTTP POST方式上传至给定URL。
  • App对图片的展示和管理

    App调用Link Visual API中图片相关接口来展示和管理图片。

    • 根据时间查询图片列表

      获取指定时间范围内所有图片缩略图和大图地址

    • 根据图片ID查询图片地址

      图片ID可以从事件列表中获取,用于展示报警事件相关的图片

    • 批量删除图片

      根据图片ID列表删除指定图片,单次不超过100张

其他功能开发

  • 设备PTZ控制

    开发PTZ控制功能时,您需要配置的物模型如下。

    标识符 功能类型 功能名称 描述 控制台勾选 开发指南
    PTZActionControl 服务 PTZ步进控制 App发起并由设备响应该服务,触发 App和设备开发者需要关注并处理该物模型
    PTZCalibrate 服务 PTZ校准 App发起并由设备响应该服务,触发设备做PTZ校准操作 按需 App和设备开发者需要关注并处理该物模型

    建议App端按1秒4次的频率调用物模型服务(PTZActionControl)向设备发送控制脉冲。设备需保证物模型服务响应即使处理不出现积累,允许忽略同方向上来不急处理的物模型服务调用。

  • 设备属性

    我们提供了摄像头品类的标准物模型,其中需要配置的功能定义如下。

    标识符 功能类型 功能名称 描述 控制台勾选 开发指南
    DayNightMode 属性 日夜模式 App设置和获取设备当前的日夜模式,设备在状态变更时及开机时主动上报 按需 App和设备开发者需要关注并处理该物模型
    ImageFlipState 属性 画面翻转状态 App设置和获取设备当前画面翻转状态,设备在状态变更及开机时主动上报 按需 App和设备开发者需要关注并处理该物模型
    MicSwitch 属性 麦克风开关 App设置和获取设备当前麦克风开关状态,设备在状态变更及开机时主动上报 按需 App和设备开发者需要关注并处理该物模型
    StatusLightSwitch 属性 状态灯开关 App设置和获取设备当前状态灯开关状态,设备在状态变更及开机时主动上报 按需 App和设备开发者需要关注并处理该物模型
    IpcVersion 属性 摄像机版本号 App获取设备当前版本号信息,设备在开机时主动上报 App和设备开发者需要关注并处理该物模型

    若标准物模型无法满足需求的,可以通过自定义功能自行拓展。例如新增物模型服务(Reboot)来实现设备重启功能。

  • 云存套餐

    云存录像使用需要为用户开通云存套餐,厂商云端调用Link Visual视频云存储购买服务的流程和API请参考LinkVisual视频云存储购买服务

    同时我们为每个设备免费赠送7天事件云存空间套餐,从领取开始持续3个月时间,每个设备仅可开通一次。App端领取和查询,详细参见Link Visual视频服务(领取云存套餐/ 查询云存套餐详情)。

  • 消息推送

    用于通过App主动向用户推送诸如移动侦测报警、设备关键状态等消息。详细参见移动应用推送开发指南

  • 配网

    详细参见配置App配网方案和引导文案

  • OTA

    详细参见固件升级