IPC 云存储

更新时间:2025-12-16 06:56:57下载pdf

概述

IThingCloudCamera 是一个用于管理智能摄像头云端功能的接口,提供了云存储视频播放、下载、时间轴数据获取等功能。

API 接口说明

ThingCloudCamera 模块

bindXComponentContext

功能描述

绑定 YUV XComponent 上下文实例,用于视频渲染显示。

函数签名

bindXComponentContext(xComponentContext: XComponentContext|undefined): void;

参数说明

参数 类型 说明
xComponentContext XComponentContext 上下文对象,用于视频渲染,可为 undefined

返回值

注意
需要在播放视频前绑定上下文,否则无法正常显示视频画面

示例

const camera = new ThingCloudCamera("device_id");
camera.bindXComponentContext(xComponentContext);

registerCloudCameraListener

功能描述
注册云摄像头监听器,用于接收云存储相关事件回调。

函数签名

registerCloudCameraListener(listener: ThingCameraCloudListener): void;

参数说明

参数 类型 说明
listener ThingCameraCloudListener 云摄像头监听器对象,实现 ThingCameraCloudListener 接口

返回值

注意
可以注册多个监听器,所有监听器都会收到事件通知

示例

const listener = {
  onSessionStatusChanged: (sessionId, status, camera) => {
    console.log("Session status changed:", status);  
  }};
camera.registerCloudCameraListener(listener);

unregisterCloudCameraListener

功能描述

移除已注册的云摄像头监听器。

函数签名

unregisterCloudCameraListener(listener: ThingCameraCloudListener): void;

参数说明

参数 类型 说明
listener ThingCameraCloudListener 云摄像头监听器对象,实现 ThingCameraCloudListener 接口

注意
只会移除指定的监听器实例

示例

camera.unregisterCloudCameraListener(listener);

getCloudDays

功能描述
获取设备的云存储日期列表,用于展示哪些日期有云存储数据。

函数签名

getCloudDays(devId: string): Promise<ThingCameraResponse<Array<ThingCameraCloudDay>> | null>

参数说明

参数 类型 说明
devId string 设备ID

返回值
Promise<ThingCameraResponse<Array> | null>: 包含云存储日期数组的响应对象,失败时返回 null

注意
需要先调用 getCloudState 方法加载云存储数据

示例

const cloudDays = await camera.getCloudDays("device_123");
if (cloudDays && cloudDays.data) {  console.log("Available cloud days:", cloudDays.data);}

getCloudSecret

功能描述
获取云存储加密密钥,用于播放和下载云存储视频。

函数签名

getCloudSecret(devId: string): Promise<string | null>

参数说明

参数 类型 说明
devId string 设备 ID

返回值

Promise<string | null>: JSON 格式的加密密钥字符串,失败时返回 null。

注意
密钥用于云存储视频的解密,需要妥善保存。

示例

const secret = await camera.getCloudSecret("device_123");
if (secret) {  console.log("Cloud secret obtained");}

playCloudVideo

功能描述
播放指定时间段的云存储视频。

函数签名

playCloudVideo(devId: string, startTime: number, endTime: number, callback: ThingFinishableCallback): void;

参数说明

参数 类型 说明
devId string 设备ID字符串
startTime number 开始时间戳(毫秒)
endTime number 结束时间戳(毫秒)
callback ThingFinishableCallback 播放结果回调函数

注意
播放前需要先获取云存储时间轴数据和加密密钥

示例

const callback = {  onSuccess: () => console.log("Play started"),  onError: (code, msg) => console.error("Play failed:", msg)};
camera.playCloudVideo("device_123", startTime, endTime, callback);

getCloudState

功能描述
获取设备云存储状态,包括加载云存储日期和密钥信息。

函数签名

getCloudState(devId: string, productId: string, instanceId: string): Promise<ThingCameraResponse<ThingCameraCloudStateBeans> | undefined>;

参数说明

参数 类型 说明
devId string 设备ID字符串
productId string 产品ID字符串
instanceId string 实例ID字符串

ThingCameraCloudStateBeans参数结构

参数 类型 描述
savedSatus string 保存状态

返回值
Promise<ThingCameraResponse | undefined>: 云存储状态响应对象

注意
这是使用云存储功能前必须调用的初始化方法

示例

const cloudState = await camera.getCloudState("device_123", "product_456", "instance_789");
if (cloudState) {  console.log("Cloud state loaded");}

getCloudTimeLineData

功能描述
获取指定时间段的云存储时间轴数据,显示哪些时间点有录像。

函数签名

getCloudTimeLineData(devId: string, startTime: number, endTime: number): Promise<ThingCameraResponse<Array<ThingCameraCloudTimeLineBean>> | undefined>

参数说明

参数 类型 说明
devId string 设备ID字符串
startTime number 开始时间戳(单位:秒)
endTime number 结束时间戳(单位:秒)

ThingCameraCloudTimeLineBean参数结构

参数 类型 描述
startTime number 开始时间戳(单位:秒)
endTime number 结束时间戳(单位:秒)
prefix number 分类标识符0: 普通录像(无事件触发)
1: 报警录像(如移动侦测触发)
2: AI事件录像(需结合 isAIStorage 使用)
isAIStorage boolean 是否由AI事件触发存储
aiDetectList Array AI检测事件详情列表

ThingCameraCloudaiDetectListBean参数结构

参数 类型 描述
startTime number 开始时间戳(单位:秒)
endTime number 结束时间戳(单位:秒)
aiCode string 类型编码
aiCodeIcon stirng 图标URL

返回值

Promise<ThingCameraResponse<Array<ThingCameraCloudTimeLineBean>> | undefined>:时间轴数据数组。

注意
调用此方法会自动配置播放所需的授权信息。

示例

const timeline = await camera.getCloudTimeLineData("device_123", startTime, endTime);
if (timeline && timeline.data) {  console.log("Timeline data:", timeline.data);}

isSupportCloudStorage

功能描述
检查设备是否支持云存储功能。

函数签名

isSupportCloudStorage(devId: string): boolean

参数说明

devId: 设备 ID 字符串。

返回值
booleantrue 表示支持云存储,false 表示不支持。

注意
使用云存储功能前建议先检查设备是否支持。

示例

if (camera.isSupportCloudStorage("device_123")) {  console.log("Device supports cloud storage");}

enableMute

功能描述
设置播放时的静音状态。

函数签名

enableMute(mute: number): void;

参数说明

参数 类型 说明
mute number 0 表示不静音,1 表示静音

返回值

注意
影响云存储视频播放时的音频输出。

示例

camera.enableMute(1); // 开启静音
camera.enableMute(0); // 关闭静音

pausePlayCloudVideo

功能描述
暂停云存储视频播放。

函数签名

pausePlayCloudVideo(): number | undefined

参数说明

返回值
number | undefined:操作结果码,undefined 表示操作失败。

注意
只能暂停正在播放的云存储视频。

示例

const result = camera.pausePlayCloudVideo();
if (result === 0) {
  console.log("Video paused successfully")
;}

resumePlayCloudVideo

功能描述
恢复云存储视频播放。

函数签名

resumePlayCloudVideo(): number | undefined

返回值
number | undefined:操作结果码,undefined 表示操作失败。

注意
只能恢复已暂停的云存储视频。

示例

const result = camera.resumePlayCloudVideo();
if (result === 0) {
  console.log("Video resumed successfully")
;}

stopPlayCloudData

功能描述
停止云存储视频播放。

函数签名

stopPlayCloudData(): number | undefined

返回值
number | undefined: 操作结果码,undefined表示操作失败

注意
停止后需要重新调用 playCloudVideo 来播放

示例

const result = camera.stopPlayCloudData();
if (result === 0) {
  console.log("Video stopped successfully")
;}

getCloudEvents

功能描述
获取指定时间段的云存储事件列表。

函数签名

getCloudEvents(devId: string, startTime: number, endTime: number): Promise<ThingCameraResponse<ThingCameraCloudEventBeans[]> | undefined>

参数说明

参数 类型 说明
devId string 设备ID字符串
startTime number 开始时间戳(毫秒)
endTime number 结束时间戳(毫秒)

ThingCameraCloudEventBeans参数说明

参数 类型 说明
datas Array 事件数据集合,存储同类型的子事件列表。例如分页数据或多层级事件场景。
startTime number 开始时间戳(毫秒)
endTime number 结束时间戳(毫秒)
snapshotUrl string 截图URL
decodeType string 编码格式
describe string 事件描述
eventType string 事件类型标识符
encryption ThingCameraCloudEncryptionBeans 加密信息

ThingCameraCloudEncryptionBeans参数结构

参数 类型 说明
key string 加密密钥

返回值
Promise<ThingCameraResponse | undefined>: 云存储事件数据

注意
事件包括移动检测、声音检测等触发的录像事件

示例

const events = await camera.getCloudEvents("device_123", startTime, endTime);
if (events && events.data) {
  console.log("Cloud events:", events.data)
;}

downloadCloudVideo

功能描述
下载指定时间段的云存储视频到本地。

函数签名

downloadCloudVideo(devId: string, startTime: number, endTime: number, filePath: string, fileName: string, thumbnailName: string): Promise<number>

参数说明

参数 类型 说明
devId string 设备ID字符串
startTime number 开始时间戳(毫秒)
endTime number 结束时间戳(毫秒)
filePath string 本地保存路径
fileName string 视频文件名
thumbnailName string 缩略图文件名

返回值
Promise: 下载任务ID,用于管理下载任务

注意
下载进度通过监听器回调通知

示例

const taskId = await camera.downloadCloudVideo(
  "device_123",   startTime,   endTime,
  "/path/to/save",   "video.mp4",   "thumb.jpg"
);

cancelCloudVideoDownload

功能描述
取消云存储视频下载任务。

函数签名

cancelCloudVideoDownload(devId: string): number | undefined

参数说明

参数 类型 说明
devId string 设备ID字符串

返回值
number | undefined: 操作结果码,undefined表示操作失败

注意
只能取消正在进行的下载任务

示例

const result = camera.cancelCloudVideoDownload("device_123");
if (result === 0) {
  console.log("Download cancelled")
;}

pauseCloudVideoDownload

功能描述
暂停云存储视频下载。

函数签名

pauseCloudVideoDownload(devId: string): number | undefined

参数说明

参数 类型 说明
devId string 设备ID字符串

返回值
number | undefined: 操作结果码,undefined表示操作失败

注意
暂停的下载可以通过 resumeCloudDataDownload 恢复

示例

const result = camera.pauseCloudVideoDownload("device_123");
if (result === 0) {
  console.log("Download paused")
;}

resumeCloudDataDownload

功能描述
恢复云存储视频下载。

函数签名

resumeCloudDataDownload(devId: string): number | undefined

参数说明

参数 类型 说明
devId string 设备ID字符串

返回值
number | undefined: 操作结果码,undefined表示操作失败

注意
只能恢复已暂停的下载任务

示例

const result = camera.resumeCloudDataDownload("device_123");
if (result === 0) {
  console.log("Download resumed")
;}

setPlayCloudDataSpeed

功能描述
设置云存储视频播放速度。

函数签名

setPlayCloudDataSpeed(speed: ThingCameraConstants.PlaySpeedLevel): number;

参数说明

参数 类型 说明
speed ThingCameraConstants.PlaySpeedLevel 播放速度级别枚举值

返回值
number: 操作结果码,0表示成功,其他值表示失败

注意
只能在播放云存储视频时设置播放速度

示例

const result = camera.setPlayCloudDataSpeed(ThingCameraConstants.PlaySpeedLevel.NORMAL);
if (result === 0) {
  console.log("播放速度设置成功");
}

startRecordLocalMp4

功能描述
开始本地录制MP4视频,将当前播放的视频流保存到本地文件。

函数签名

startRecordLocalMp4(folderPath: string, mp4FileName: string, thumbFileName: string, rotate: number): number;

参数说明

参数 类型 说明
folderPath string 保存视频文件的文件夹路径
mp4FileName string MP4视频文件名
thumbFileName string 缩略图文件名
rotate number 视频旋转角度

返回值
number: 操作结果码,0表示成功,其他值表示失败

注意
需要确保文件夹路径有写入权限,录制前需要先开始播放视频

示例

const result = camera.startRecordLocalMp4(
  "/path/to/save",
  "record.mp4",
  "thumb.jpg",
  0);
if (result === 0) {
  console.log("开始录制视频");
}

stopRecordLocalMp4

功能描述
停止本地MP4视频录制。

函数签名

stopRecordLocalMp4(): number;

参数说明

返回值
number: 操作结果码,0表示成功,其他值表示失败

注意
只能停止正在进行的录制操作

示例

const result = camera.stopRecordLocalMp4();
if (result === 0) {
  console.log("停止录制成功");
}

snapshot

功能描述
截取当前视频画面并保存为图片文件。

函数签名

snapshot(absoluteFilePath: string, rotation: ThingCameraConstants.Rotation): number 

参数说明

参数 类型 说明
absoluteFilePath string 截图保存的绝对路径,包括文件名
rotation ThingCameraConstants.Rotation 图片旋转参数枚举值

返回值
number: 操作结果码,0表示成功,其他值表示失败

注意
截图前需要确保视频正在播放,且文件路径有写入权限

示例

const result = camera.snapshot(
  "/path/to/snapshot.jpg", 
  ThingCameraConstants.Rotation.Rotation_0
);
if (result === 0) {
  console.log("截图成功");
}

setDeviceFeatures

功能描述
设置设备特性和功能配置。

函数签名

setDeviceFeatures(jsonFeatures: string): number;

参数说明

参数 类型 说明
jsonFeatures string JSON格式的设备特性配置字符串

返回值
number: 操作结果码,0表示成功,其他值表示失败

注意
JSON配置格式需要按照设备要求提供,配置项可能包括视频质量、编码参数等

示例

const features = {
  "videoQuality": "high",
  "encodeType": "h264"
};
const result = camera.setDeviceFeatures(JSON.stringify(features));
if (result === 0) {
  console.log("设备特性设置成功");
}

使用示例

获取云存储管理类

if (this.cloudCameraManager === undefined) {
  this.cloudCameraManager = ThingIPCSdk.getCloudCamera(this.mDeviceId);
}

this.cloudCameraManager = ThingIPCSdk.getCloudCamera(this.mDeviceId);

判断设备是否支持云存储

if (this.cloudCameraManager === undefined) {
  this.cloudCameraManager = ThingIPCSdk.getCloudCamera(this.mDeviceId);
}

let support = this.cloudCameraManager?.isSupportCloudStorage(this.mDeviceId);

云存储回放 查询云存储状态

if (this.cloudCameraManager === undefined) {
  this.cloudCameraManager = ThingIPCSdk.getCloudCamera(this.mDeviceId);
}

this.cloudCameraManager?.getCloudState(this.mDeviceId,(this.mDeviceBean?.productId ? this.mDeviceBean.productId : ''),(this.mDeviceBean?.uuid ? this.mDeviceBean.uuid : ''))
  .then((responres: ThingCameraResponse<ThingCameraCloudStateBeans> | undefined) => {
    if (responres !== undefined) {
      console.log('cloudState' + responres);
    }
  })
  .catch((e: TSmartAtopRequestError) => {
    IPCLog.d(this.logTag, "getCloudState = " + e);
  })

获取云存储时间片

if (this.cloudCameraManager === undefined) {
  this.cloudCameraManager = ThingIPCSdk.getCloudCamera(this.mDeviceId);
}
this.cloudCameraManager.getCloudTimeLineData(this.mDeviceId,1743091200,1743177599)
  .then((response: ThingCameraResponse<Array<ThingCameraCloudTimeLineBean>> | undefined) => {
    if (response) {
      // console.log('getCloudTimeLineData:' + response.result);
      let  prefix = '';
      response.data?.forEach((item: ThingCameraCloudTimeLineBean) => {
        prefix = prefix + item.prefix;
      })
      this.cloudDataTitle = '云存储数据 获取成功'
      this.canPlay = true;
    }
  }).catch((e: TSmartAtopRequestError) => {
  IPCLog.d(this.logTag, "getCloudState = " + e);
})

获取云存储天数

if (this.cloudCameraManager === undefined) {
  this.cloudCameraManager = ThingIPCSdk.getCloudCamera(this.mDeviceId);
}
this.cloudCameraManager?.getCloudDays(this.mDeviceId).then((response: ThingCameraResponse<Array<ThingCameraCloudDay>> | null) => {
  response?.data?.forEach((item:ThingCameraCloudDay) => {
    console.log(item.uploadDay);
  })
});

开始播放云存储

if (this.cloudCameraManager === undefined) {
  this.cloudCameraManager = ThingIPCSdk.getCloudCamera(this.mDeviceId);
}
let callback: ThingFinishableCallback = {
  onFinished: (data: string, errCode: number): void => {
    IPCLog.i(this.logTag, " onfinished message received.")
  },
  onEvent: (eventType: number, info1: number, info2: number, errInfo: string): void => {
    IPCLog.i(this.logTag, " onEvent message received.")
  },
  onResponse: (reason: string, errCode: number): number => {
    IPCLog.i(this.logTag, " onResponse reson:" + reason + " errCode:" + errCode);
    return 0;
  }
}
this.cloudCameraManager.playCloudVideo(this.mDeviceId,1743091201,1743104342,callback)

云存储播放器

XComponent({
  id: 'xcomponentId0',
  type: XComponentType.SURFACE,
  libraryname: 'thingvideorenderersdk'
}).onLoad((xComponentContext) => {
  this.xComponentContext0 = xComponentContext as XComponentContext;
  if (this.cloudCameraManager === undefined) {
    this.cloudCameraManager = ThingIPCSdk.getCloudCamera(this.mDeviceId);
  }
  this.cloudCameraManager?.bindXComponentContext(this.xComponentContext0);
}).onDestroy(() => {
  console.log('onDestroy');
}).id("xcomponent")

更新云存储声音状态

let callback: ThingFinishableCallback = {
  onFinished: (data: string, errCode: number): void => {
  IPCLog.i(this.logTag, " onfinished message received.")
  },
  onEvent: (eventType: number, info1: number, info2: number, errInfo: string): void => {
    IPCLog.i(this.logTag, " onEvent message received.")
  },
  onResponse: (reason: string, errCode: number): number => {
    IPCLog.i(this.logTag, " onResponse reson:" + reason + " errCode:" + errCode);
    return 0;
  }
}
this.cloudCameraManager?.enableMute(1,callback);