API 描述
本文档为 HarmonyOS 平台 API, 适用于华为鸿蒙系统 HarmonyOS 5.0.0 (12) 及以上版本,使用时请先在项目中配置引用 SDK 包。
SDK 引用及依赖配置
1. 将 HAR 文件复制到工程目录下。
2. 在需要引入三方包的模块的 oh-package.json5 中设置本地 HAR 包。
"dependencies": {"linkboostsdk": "file:path/to/linkboostsdk.har" // 此处也可以是以当前 oh-package.json5所在目录为起点的相对路径。}
3. 依赖设置完成后,需要执行 ohpm install 命令安装依赖包。
API 概览
TrroRemote
SDK 功能主入口:
API | 描述 |
获取 TrroControl 单例。 | |
注册 SDK 事件监听。 | |
使用配置参数启动 SDK。 | |
使用 JSON 配置启动 SDK。 | |
连接现场设备视频流。 | |
获取在线现场设备列表。 | |
获取对应网关的版本。 | |
关闭指定视频连接。 | |
关闭所有视频连接。 | |
给现场设备发送控制数据。 | |
现场设备音频设置。 | |
向网关发出权限请求。 | |
更新现场设备目标视频流编码参数。 | |
用于观看身份验证。 | |
释放 SDK 资源。 | |
获取 SDK 版本号。 |
getInstance
获取 TrroRemote 单例。
public static getInstance(): TrroRemote
setListener
注册 SDK 事件监听,可获取网关连接状态、媒体信息等。
public abstract setListener(listener: TrroRemoteListener): void
参数 | 描述 |
listener | 监听器实例。 |
initWithOptions
使用配置参数启动 SDK,接口为同步阻塞模式,等待信令连接成功后返回。
返回值:成功 1 失败 <= 0
public abstract initWithOptions(context: Context, trroOptions: TrroOptions): number
参数 | 描述 |
context | ApplicationContext |
trroOptions |
initWithJson
使用 JSON 配置启动 SDK,接口为同步阻塞模式,等待信令连接成功后返回。
返回值:成功 1 失败 <= 0
public abstract initWithJson(context: Context, jsonStr: string): number
参数 | 描述 |
context | ApplicationContext |
jsonStr |
connect
发起单路视频连接,可多次调用连接不同流,异步模式,根据 onState 状态回调确认视频连接成功,连接多路视频流也可以用下面多路视频流连接接口。
public abstract connect(gwid: string, connectParam: TrroConnectParam): void
参数 | 描述 |
gwid | 目标连接的现场设备 ID,需添加 projectid 前缀: 格式: projectid/gwid 示例: ebesyladhdhs8txj/cam_logitech |
connectParam |
connect
发起多路视频连接,异步模式,根据 onState 状态回调确认视频连接成功。
public abstract connectList(gwid: string, connectParamList: ArrayList<TrroConnectParam>): void
参数 | 描述 |
gwid | 目标连接的现场设备 ID,需添加 projectid 前缀: 格式: projectid/gwid 示例: ebesyladhdhs8txj/cam_logitech |
connectParamList | 连接参数列表,配置每一路视频参数。 |
getGwList
返回值:在线设备列表信息对象。
获取在线现场设备的设备列表,接口为同步阻塞模式。
public abstract getGwList(): GateWayList
getGwInfo
获取网关详细信息,接口为同步阻塞模式。
返回值:网关详细信息对象。
public abstract getGwInfo(gwid: string): GwInfo
参数 | 描述 |
gwid | 目标连接的现场设备 ID。 |
disconnect
关闭指定视频连接。
返回值:成功 1 失败 <= 0
public abstract disconnect(connFd: number): number
参数 | 描述 |
connFd | 要关闭视频连接对应的连接 Fd。 |
disconnectAll
关闭所有视频连接。
返回值:成功 1 失败 <= 0
public abstract disconnectAll(): number
sendControlData
给现场设备发送控制数据。
返回值:成功 1 失败 <= 0
public abstract sendControlData(gwid: string, msg: ArrayBuffer, qos: number): number
参数 | 描述 |
gwid | 目标连接的现场设备 ID。 |
msg | 消息内容。 |
qos | 消息传输 QoS。 0:不可靠传输。 1:可靠传输。 |
audioMute
现场设备音频设置。
返回值:成功 1 失败 <= 0
public audioMute(gwid: string, mute: boolean): number
参数 | 描述 |
gwid | 目标连接的现场设备 ID。 |
mute | true:静音 false:取消静音。 |
requestPermission
向网关发出权限请求。
返回值:成功 1 失败 <= 0
public abstract requestPermission(gwid: string, permission: number): number
参数 | 描述 |
gwid | 目标连接的现场设备 ID。 |
permission | 0 guest,只有观看权。 1 master, 完全控制权限。 |
fieldDeviceEncodeConfig
更新现场设备目标视频流编码参数。
返回值:成功 1 失败 <= 0
public abstract fieldDeviceEncodeConfig(gwid: string, streamId: number, encodeConfig: string): number
参数 | 描述 |
gwid | 目标连接的现场设备 ID。 |
streamId | 目标视频流编号。 |
encodeConfig | 待更新的编码参数 ,JSON 格式字符串,缺省字段将保持当前值不进行更新,下面是更新支持的编码参数示意: { "fps": 30, "encode_width": 1920, "encode_height": 1080, "bps": 3000, "min_fps": 30, "min_bps": 1800, "force_min": 0, "min_width": 1920 } |
setSessionPermissionToken
白名单模式下,针对未注册设备观看,用于观看身份验证。
返回值:成功 1 失败 <= 0
public abstract setSessionPermissionToken(gwid: string, signature: string): number;
参数 | 描述 |
gwid | 目标连接的现场设备 ID。 |
signature | 基于项目密钥签发的临时授权签名。 |
diagRequest
需要主动触发,诊断网关、控制端当前状态输出报告。
返回值:成功 1 失败 <= 0
public abstract diagRequest(gwid: string): number
参数 | 描述 |
gwid | 目标连接的现场设备 ID。 |
destroy
释放 SDK 资源,在程序退出时可以主动释放 SDK 资源。
public abstract destroy(): void
getSDKVersion
获取 SDK 版本号信息。
返回值:SDK 字符串版本号。
public static getSDKVersion(): string
TrroOptions
TrroConnectParam
视频流连接配置参数。
属性 | 描述 |
streamId | 现场设备视频流的 ID 数组, 现场设备视频流 ID 从0开始, 最大值为现场设备支持的 device_streams 数量 -1 |
connFd | 接收视频流的句柄标识,自行编号,取值从0开始。 |
videoView | 用于视频流显示的控件。 |
nightVisionEnabled | 设置是否开启夜视模式。 |
TrroRemoteListener
SDK 事件监听接口。
API | 描述 |
onState | 视频流连接状态回调。 |
onAllLatencyCallback | 时延回调。 |
onReportData | 接收来自现场设备信息回调。 |
onRemoteFrameData | 视频帧回调。 |
onRemoteEncodedFrame | 编码帧回调。 |
onError | 错误信息回调。 |
onOperationPermissionState | 回调现场设备操控权限状态通知。 |
onSignalState | 信令连接状态回调。 |
onRemoteMixAudioFrame | 远端设备音频数据回调。 |
onDiagReport | 诊断信息回调。 |
onState
视频流连接状态回调。
onAllLatencyCallback: (gwid: string, connFd: number, latency1: number, latency2: number, videotime: number,rcct: number) => void
参数 | 描述 |
gwid | 现场设备 ID。 |
streamId | 现场设备流 ID。 |
connFd | 连接 Fd。 |
state | 0:未连接,1:连接中,2:已连接,3:正在断开连接。 |
onAllLatencyCallback
时延回调。
onAllLatencyCallback: (gwid: string, connFd: number, latency1: number, latency2: number, videotime: number,rcct: number) => void
参数 | 描述 |
gwid | 现场设备 ID。 |
connFd | 连接 Fd。 |
latency1 | 返回视频传输时延 ms。 |
latency2 | 返回视频 + 控制回环时延 ms。 |
videotime | 当前视频帧的现场设备采集时间戳。 |
rcct | 控制信道往返时延 ms。 |
onReportData
接收来自现场设备信息回调。
onReportData: (gwid: string, msg: ArrayBuffer, qos: number) => void
参数 | 描述 |
gwid | 现场设备 ID。 |
msg | 消息内容。 |
qos | 消息来源传输 qos。 0:不可靠传输。 1:可靠传输。 |
onRemoteFrameData
视频帧回调。
onRemoteFrameData: (gwid: string, streamId: number, connFd: number, data: ArrayBuffer, width: number, height: number,videoTime: number) => void
参数 | 描述 |
gwid | 现场设备 ID。 |
streamId | 现场设备流 ID。 |
connFd | 连接 Fd。 |
data | 视频帧数据。 |
width | 视频帧宽。 |
height | 视频帧高。 |
videoTime | 当前视频帧的现场设备采集时间戳。 |
onRemoteMixAudioFrame
远端设备音频数据回调。
onRemoteMixAudioFrame: (data: ArrayBuffer, length: number, channel: number, sampleRate: number) => void
属性 | 描述 |
data | 音频 PCM 数据 10ms 16bits。 |
length | 数据长度。 |
channel | 音频声道数目,例如单声道为1,双声道为2。 |
sampleRate | 音频采样率。 |
onError
错误信息回调。
onError: (errorCode: number, errorMsg: string) => void;
参数 | 描述 |
errorCode | 错误码。 |
errorMsg | 错误信息描述。 |
onOperationPermissionState
回调现场设备操控权限状态通知。
onOperationPermissionState: (fieldDevId: string, selfPermission: number, masterDevId: string) => void
参数 | 描述 |
fieldDevId | 来源现场设备 ID。 |
selfPermission | |
masterDevId | 拥有 master 权限的远端设备 ID。 |
onSignalState
信令连接状态回调。
onSignalState: (signalState: number) => void
参数 | 描述 |
signalState | 信令连接状态。 0 连接建立成功。 1 连接断开,内部会进行自动重连。 2 自动重连成功。 3 被踢下线。 4 用户名或者密码错误。 |
onDiagReport
诊断信息回调。
onDiagReport: (gwid: string, type: number, json: string) => void;
属性 | 描述 |
gwid | 网关 ID。 |
type | 0:上行,1:下行。 |
json | 上行: 上行数据包的 JSON 格式描述。 下行: 下行数据包的 JSON 格式描述。 |
GateWayList
现场设备列表。
属性 | 描述 |
ret | 0:获取成功。 |
msg | 获取结果描述。 |
count | 在线设备总数。 |
gateways | 数组,在线设备列表。 |
GateWay
现场设备。
属性 | 描述 |
name | 设备名称。 |
type | 设备类型。 |
status | 设备状态。 |
streams | 视频流数量。 |
timestamp | 时间戳。 |
version | 设备版本。 |
TXCloudVideoView
视频流显示控件。
API | 描述 |
setFillMode | 设置视频画面填充模式。 |
setFillMode
设置视频画面填充模式
参数 | 描述 |
fillMode | 0:填充(画面可能会被拉伸裁剪)。 1:适应(显示完整画面,可能会有黑边)。 默认值:0 |
示例代码
SDK 初始化
//初始化配置,详细参数说明参考:https://cloud.tencent.com/document/product/1584/89794let trroOptions = new TrroOptions();trroOptions.device_id = "****"trroOptions.projectid = "****"//日志级别,0:关闭,1,输出部分运行日志,2:输出详细运行日志trroOptions.log_enable = 2;trroOptions.device_name = "****";trroOptions.password = "****";trroOptions.cloud_mode = "public"trroOptions.sdk_mode = "server2"//初始化TRRO SDKlet ret = this.trroRemote.initWithOptions(this.context, trroOptions);
连接视频流
在index文件中,配置视频流显示控制 tXCloudVideoView
XComponent({id: 'myXComponent',type: XComponentType.SURFACE,controller: this.tXCloudVideoView})
连接设备视频流
//第1路视频连接信息配置let trroConnectParam = new TrroConnectParam();//现场设备视频流的ID数组, 现场设备视频流ID从0开始trroConnectParam.streamId = 0//connFd,分配一个唯一ID,建议从0开始trroConnectParam.connFd = 0trroConnectParam.videoView = this.tXCloudVideoView as TXCloudVideoView;//第2路视频连接信息配置let trroConnectParam2 = new TrroConnectParam();//现场设备视频流的ID数组, 现场设备视频流ID从0开始trroConnectParam2.streamId = 1//connFd,分配一个唯一ID,建议从0开始trroConnectParam2.connFd = 1trroConnectParam2.videoView = this.tXCloudVideoView2 as TXCloudVideoView;let trroConnectParamList = new ArrayList<TrroConnectParam>();trroConnectParamList.add(trroConnectParam);trroConnectParamList.add(trroConnectParam2);//调用connect方法连接现场设备视频流TrroRemote.getInstance().connectList(gwId, trroConnectParamList)
事件回调监听
//生命周期函数中设置监听器,比如在aboutToAppear方法设置监听TrroRemote.getInstance().setListener(this);
资源释放
//在退出时释放资源,比如在aboutToDisappear方法中调用TrroRemote.getInstance().destroy()