LinkVisual视频解决方案(内测中)

更新时间:2019-07-31 18:44:43

什么是LinkVisual

产品名称:阿里云物联网视频接入服务/LinkVisual
使用对象:希望将设备数字化改造、快速完成设备上云对接的摄像头生产厂商&视频场景的方案商或服务提供商等。
文档目的:介绍整体Link Visual的产品功能特点介绍,在飞燕平台的产品对接流程指南、APP集成、各端SDK介绍、功能开发以及API介绍等。

服务介绍

LinkVisual是一个提供视频数据上云、存储、转发、AI计算的视频云产品,提供设备端SDK、边缘节点解决方案,支持各种标准的适配与统一。配合阿里云物联网标准化物模型对接方式,最轻量级的完成设备上云连接;同时提供云端app开发需要的相关API或SDK,帮助您围绕视频业务,快速完成场景搭建。(目前仅在中国站提供该服务)

服务概述

LinkVisual产品的核心技术、功能链路如下图所示:
主要面向的场景包括:
家用级别的安防监控、视频采集直播存储场景,提供一整套的设备连接,云端开发控制等功能,另外辅助以云端转发、存储、视频AI等增值扩展服务,解决客户安防场景下的远程视频观看、存储、报警与控制需求。

收费说明

产品的服务收费由两部分组成:
设备连接费用:
设备使用基础的阿里云物联网平台&视频接入服务,每台设备可以根据实际预计的带宽占用,购买不同规格的设备激活码(例如512Kbps、1Mbps等)。一次买断设备终身享受服务。
注:阿里云会统计实际带宽占用,如设备平均带宽超过其激活码的限制,阿里云将采取包括但不限于限制带宽、丢帧等措施。所以请根据实际使用场景选择合适规格的设备激活码。
云存储套餐费用:
LinkVisual增值提供视频数据云端存储服务套餐,服务套餐每月按照设定的存储周期存储数据,循环存储一个月为一个最小套餐单位。例如,开通套餐后,视频数据以X天为最长周期滚动循环存储,当第X+1天数据产生时,则覆盖删除距离X+1天最远的历史存储数据。
以上具体收费标准,请以服务购买中实际价格为准。

开发前准备

概念介绍

名词 说明
LinkVisual App SDK LinkVisual App端SDK,支持Android/iOS平台,包括播放器模块和语音对讲模块
LinkVisual Device SDK LinkVisual 设备端SDK,支持Linux和Android平台
LinkVisual视频服务API LinkVisual云服务提供的一系列与视频相关的API,例如:录像计划设置、事件联动录像规则、设备绑定关系等

准备阶段

通过以下几步,快速使用产品服务:

  1. 在平台,使用“摄像头”物模型创建产品添加设备

  1. 在该项目的服务中心,找到并开通Link Visual服务(内测期间限时0.99元)

  1. 服务开通后,再单独开通需要使用该视频服务的产品

  1. 功能定义:我们提供了摄像头品类的标准物模型,请在“标准功能”一项点击“新增”把所有的标准功能添加到当前的产品的物模型。如果标准物模型的属性、事件、服务的定义不满足实际需求,可以自定义扩展。



  1. 在设备侧,结合基础设备端Link Kit SDK 和 摄像头 SDK,完成摄像头设备开发(根据页面底部申请内测,获取摄像头设备端 SDK和文档,将有专门团队为您一对一支持)
  2. APP侧,结合平台基础APP SDK 和 视频 SDK,开发自有品牌APP

  3. 开发调试完成后,在量产管理中,为产品购买视频激活码(一台摄像头设备,需购买一个视频激活码)

  1. 在运营中心,查看用户购买的云录像套餐情况

快速开始

设备端Demo

我们编译提供Ubuntu 16.04 x86 64位环境下的SDK,并提供SDK使用范例的Demo,合作方可以在Ubuntu下快速把Demo跑起来。

自主APP集成

我们在飞燕平台的DemoAPP里集成了LinkVisual APP SDK,提供了增加了LinkVisual视频能力的DemoAPP。合作方参考DemoAPP的实现,在自己在飞燕平台创建的项目产品的自主APP里可以快速集成LinkVisual APP播放器SDK和云端接口调用。

云智能APP使用摄像头

设备完成配网接入后,可在云智能APP上进行视频功能开发,完成全部开发工作后,设备可在云智能APP上露出和使用。

云智能APP中的摄像头配网

针对摄像头产品,平台支持多种配网方案,可以在控制台-人机交互-配网引导中进行选择,包括摄像头行业常用的“摄像头扫码配”,请参见文档WiFi 配网方案介绍

image.png

云智能APP中的摄像头面板

当您从云智能App设备列表进入到对应的摄像头设备后,您将看到如下界面:
(直播、设置、图库和本地录像播放的截图)

image.png

  • 当前云智能App中摄像头功能包含:摄像头设置,直播清晰度切换,直播声音开关,直播录屏,直播截图,语音对讲,全屏播放,摄像头转动控制,图库,卡录像以及云端录像(暂未提供,尽请期待)。

  • 其中摄像头设置包含了摄像头日夜模式,视频画面翻转,报警开关(是设备报警的总开关,在设备能够报警时,当触发报警的时候设备将上传一张报警照片到云端,用户可以在图库中进行查看),移动侦测灵敏度设置(设置摄像头移动侦测的灵敏度),报警频率设置(控制摄像头上报报警事件的频率),报警时段设置(设置摄像头在哪些时段可以进行报警上报即只是在哪些时段进行报警),存储卡状态,容量展示以及格式化存储卡(将会格式化掉摄像头内存储卡内的所有文件)。

  • 直播声音开关只是在开关手机上直播的音量并不影响摄像头采集声音。

  • 直播录屏以及直播截图:都是从当前直播流上截取的,用户可以根据自身需求进行直播截屏(获取当前直播画面的图片)和直播录屏(录制一段时间的直播录像),产生的文件可以在手机相册内查看。

  • 语音对讲:App用户可以通过这个功能跟摄像头方人员进行语音聊天。

  • 摄像头转动控制:用户可以通过直播页面的转向盘控制摄像头进行上下左右转动由此用户可以看到需要的直播画面。

  • 图库内展示的设备报警产生的报警图片(具体的上报开关,灵敏度,频率以及时段在设置中“报警设置”中设置)。

  • 卡录像内展示的是一定时间内的摄像头内存储卡保存的历史录像,用户可以看到任意时段设备保存的卡录像。

相关文档

云存储购买对接文档: https://living.aliyun.com/doc#xc6wab.html

LinkVisual Device SDK文档: https://living.aliyun.com/doc#nipsvz.html

Linkvisual API文档: https://living.aliyun.com/doc#hf2qit.html

LinkVisual App SDK文档: Android / iOS

功能开发

直播

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

相关物模型:

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

视频播放

LinkVisual App SDK提供直播播放器,集成请参考 LinkVisual App SDK文档

P2P支持

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

App端P2P依赖飞燕长连接通道,需要App初始化长连接通道SDK,并完成长连接通道与账号绑定.
请参考(Android长连接通道集成/iOS长连接通道集成).

确认设备端P2P是否集成成功
设备端SDK集成完毕后,确保DemoApp和IPC设备连在同一个WIFI下,将DemoApp的测试信息开关打开后,进入直播页面,左上角 RELAY代表RTMP云转,LOCAL代表P2P直连, SRFLX代表P2P穿透. image.png
确认自有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提供了截图和录屏接口,详见: LinkVisual App SDK文档.

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

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

云存录像

云存录像的使用需要为用户开通云存空间,详见 云存套餐开通.

云存录像来源有三种:

  • 计划录像

    以周为一个循环单位,每周一天或多天的时间段内,云端主动通知设备端推流并转存到云存空间.<br />      例如: 配置周一至周五全天的计划录像.
    
  • 事件联动录像

设备主动上报事件,且该事件在事先配置的事件录像计划内,云端通知设备端推流一段时间并转存到云存空间.
例如: 配置每天白天8点到晚上8点的报警事件录像计划,当设备在该时间端触发移动侦测报警时,云端通知设备推流(支持预录)一段时间.

  • 主动录像

App通过调用API接口(主动触发设备进行短录像任务)来实现,云端主动通知设备端推流一段时间数据并转存到云存空间.

配置录像计划

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

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

更多接口如配置/更新/解绑/删除/查询等,详见 LinkVisual API文档

配置事件联动录像计划

为设备配置事件联动录像计划的一般步骤为:

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

更多接口如配置/更新/解绑/删除/查询等,详见 LinkVisual API文档

获取云存录像播放地址

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

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

播放云存录像

云存录像使用HLS作为流媒体播放协议.
Android LinkVisual App SDK提供基于ExoPlayer封装的ExoHlsPlayer用于HLS流播放.
iOS SDK提供基于AVFoundation封装的IMSLinkVisualHLSPlayer用于HLS流播放.

云存录像下载

支持云存录像下载后播放,详见 LinkVisual API文档

视频加密

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

设备录像点播

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

涉及物模型:

标志符 功能类型 功能名称 描述 开发指南
StartVodByTime 服务 按时间方式开始观看录像 通知设备开始点播RTMP推流 无需开发者关注,请开发者关注设备端SDK接口
QueryRecordTimeList 服务 查询录像时间列表 App发起并由设备端响应查询请求,返回指定查询时间区间内有录像内容的时间段列表 App和设备开发者需要关注并处理该物模型
StartVod 服务 按单个文件方式开始观看录像 通知设备开始点播RTMP推流 无需开发者关注,请开发者关注设备端SDK接口
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接口(按文件名获取播放)来播放录像.

需要注意的是:

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

按时间段方式点播

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

  1. App调用物模型服务(QueryRecordTimeList)获取某个时间区间(一般为1天)内哪些时间段有录像.
  2. 设备端响应物模型服务(QueryRecordTimeList),查询完毕将结果返回给App展示.
  3. App调用API接口(按时间请求本地录像播放)来播放录像,默认连接建立后从时间区间的第一个时间端开头开始播放,如需要做偏移,可在发起请求时指定seekTime来做初始偏移.

需要注意的是:

  1. 物模型服务(QueryRecordTimeList)返回结果有大小限制,App端查询设备端录像文件列表时需要做分页查询,每页建议10条数据.
  2. 设备端响应物模型服务(QueryRecordTimeList)必须在3S内查询完毕,否则会触发超时导致查询失败.
  3. 按时间段方式点播模式下,设备端默认开启连续播放,即一段录像文件播放完毕后,自动开始下个文件的推流.

若App端需要实现非连续播放的时间轴设备录像效果,推荐使用单个文件方式点播模式来实现.

  1. 按时间段方式点播模式下,若seek指令下发的时间偏移量上无视频内容,则设备端SDK默认实现向后寻找到接下来最近的视频内容起始点开始推流.
  2. 按时间段方式点播模式下,如果APP下发seek时间后无录像,设备端显式发出推流结束指令告知App播放完毕,但不断开连接允许再次seek.
  3. 按时间段方式点播模式下,获取播放文件长度为发起播放请求时的起止时间端(endTime-beginTime)的时长.
  4. 按时间段方式点播模式下,seek命令,APP发送相对于BeginTime的相对时间偏移,单位秒.

image.png

设备推流

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

倍速播放

暂时还未支持.

点播播放器

较于直播播放器点播播放器增加暂停/恢复、跳至指定位置播放、获取总时长、获取当前时长接口,请参考
LinkVisual App SDK文档

语音对讲

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

对讲由App端发起,由设备端响应,集成过程详见: LinkVisual App SDK文档LinkVisual Device SDK文档

涉及物模型:

标志符 功能类型 功能名称 描述 开发指南
StartVoiceIntercom 服务 开始语音对讲 通知设备开始语音对讲 无需开发者关注,请开发者关注设备端SDK接口
StopVoiceIntercom 服务 停止语音对讲 通知设备停止对讲 无需开发者关注,请开发者关注设备端SDK接口

对讲模式

对讲模式 设备端 App 依赖
双向实时对讲 实时收发音频 实时收发音频 设备需要MIC和Speaker,设备和App均需要支持回声消除
单向实时对讲 实时收音频 实时发送音频 设备需要Speaker

链路加密

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

事件上报

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

涉及物模型:

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

抓图

涉及物模型:

标志符 功能类型 功能名称 描述 开发指南
TriggerPicCapture 服务 触发设备抓图 通知设备抓图并上报到给定url 无需开发者关注,请开发者关注设备端SDK接口

主动抓图

由App端主动通知设备抓图.
发起流程如下:

  1. App调用LinkVisual API(主动抓图)通知设备抓图.
  2. 设备响应物模型服务(TriggerPicCapture)调用,触发抓图,并将图片通过HTTP POST方式上传至给定url.

事件关联抓图

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

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

App对图片的展示和管理

App通过调用LinkVisual API中图片相关接口来展示和管理图片:

  • 根据时间查询图片列表

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

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

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

  • 批量删除图片

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

设备PTZ控制

涉及物模型:

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

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

设备属性

我们提供了摄像头品类的标准物模型,其中包括对以下定义:

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

自行义功能

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

云存套餐

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

同时我们为每个设备免费赠送7天事件云存空间套餐,从领取开始持续3个月时间,每个设备仅可开通一次.
App端领取和查询见:
LinkVisual API文档(领取云存套餐/ 查询云存套餐详情)

消息推送

用于通过App主动向用户推送诸如移动侦测报警、设备关键状态等消息.
请参考 消息推送

配网

请参考 配网方案

OTA

请参考 固件升级

内测名额申请

由于产品目前还处于内部测试阶段,请务必在使用之前,先申请内部测试的名额,以获取必要的SDK/接口说明以及技术支持。
请按照标题格式【LinkVisual对接支持 +「空格」+ 公司名称】,发送电子邮件至 alibaba_iot@service.aliyun.com,进行内测申请。
并确保在邮件内容中,请包含如下信息:
1.公司名称
2.联系人及联系方式
3.公司地址
4.应用场景描述
我们的商务人员在收到邮件后,会主动与您联系。

results matching ""

    No results matching ""