更新时间:2025-12-16 06:56:57下载pdf
IThingCloudCamera 是一个用于管理智能摄像头云端功能的接口,提供了云存储视频播放、下载、时间轴数据获取等功能。
功能描述
绑定 YUV XComponent 上下文实例,用于视频渲染显示。
函数签名
bindXComponentContext(xComponentContext: XComponentContext|undefined): void;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| xComponentContext | XComponentContext | 上下文对象,用于视频渲染,可为 undefined |
返回值
无
注意
需要在播放视频前绑定上下文,否则无法正常显示视频画面
示例
const camera = new ThingCloudCamera("device_id");
camera.bindXComponentContext(xComponentContext);
功能描述
注册云摄像头监听器,用于接收云存储相关事件回调。
函数签名
registerCloudCameraListener(listener: ThingCameraCloudListener): void;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| listener | ThingCameraCloudListener | 云摄像头监听器对象,实现 ThingCameraCloudListener 接口 |
返回值
无
注意
可以注册多个监听器,所有监听器都会收到事件通知
示例
const listener = {
onSessionStatusChanged: (sessionId, status, camera) => {
console.log("Session status changed:", status);
}};
camera.registerCloudCameraListener(listener);
功能描述
移除已注册的云摄像头监听器。
函数签名
unregisterCloudCameraListener(listener: ThingCameraCloudListener): void;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| listener | ThingCameraCloudListener | 云摄像头监听器对象,实现 ThingCameraCloudListener 接口 |
注意
只会移除指定的监听器实例
示例
camera.unregisterCloudCameraListener(listener);
功能描述
获取设备的云存储日期列表,用于展示哪些日期有云存储数据。
函数签名
getCloudDays(devId: string): Promise<ThingCameraResponse<Array<ThingCameraCloudDay>> | null>
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| devId | string | 设备ID |
返回值
Promise<ThingCameraResponse<Array
注意
需要先调用 getCloudState 方法加载云存储数据
示例
const cloudDays = await camera.getCloudDays("device_123");
if (cloudDays && cloudDays.data) { console.log("Available cloud days:", cloudDays.data);}
功能描述
获取云存储加密密钥,用于播放和下载云存储视频。
函数签名
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(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(devId: string, productId: string, instanceId: string): Promise<ThingCameraResponse<ThingCameraCloudStateBeans> | undefined>;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| devId | string | 设备ID字符串 |
| productId | string | 产品ID字符串 |
| instanceId | string | 实例ID字符串 |
ThingCameraCloudStateBeans参数结构
| 参数 | 类型 | 描述 |
|---|---|---|
| savedSatus | string | 保存状态 |
返回值
Promise<ThingCameraResponse
注意
这是使用云存储功能前必须调用的初始化方法
示例
const cloudState = await camera.getCloudState("device_123", "product_456", "instance_789");
if (cloudState) { console.log("Cloud state loaded");}
功能描述
获取指定时间段的云存储时间轴数据,显示哪些时间点有录像。
函数签名
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(devId: string): boolean
参数说明
devId: 设备 ID 字符串。
返回值
boolean:true 表示支持云存储,false 表示不支持。
注意
使用云存储功能前建议先检查设备是否支持。
示例
if (camera.isSupportCloudStorage("device_123")) { console.log("Device supports cloud storage");}
功能描述
设置播放时的静音状态。
函数签名
enableMute(mute: number): void;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| mute | number | 0 表示不静音,1 表示静音 |
返回值
无
注意
影响云存储视频播放时的音频输出。
示例
camera.enableMute(1); // 开启静音
camera.enableMute(0); // 关闭静音
功能描述
暂停云存储视频播放。
函数签名
pausePlayCloudVideo(): number | undefined
参数说明
无
返回值
number | undefined:操作结果码,undefined 表示操作失败。
注意
只能暂停正在播放的云存储视频。
示例
const result = camera.pausePlayCloudVideo();
if (result === 0) {
console.log("Video paused successfully")
;}
功能描述
恢复云存储视频播放。
函数签名
resumePlayCloudVideo(): number | undefined
返回值
number | undefined:操作结果码,undefined 表示操作失败。
注意
只能恢复已暂停的云存储视频。
示例
const result = camera.resumePlayCloudVideo();
if (result === 0) {
console.log("Video resumed successfully")
;}
功能描述
停止云存储视频播放。
函数签名
stopPlayCloudData(): number | undefined
返回值
number | undefined: 操作结果码,undefined表示操作失败
注意
停止后需要重新调用 playCloudVideo 来播放
示例
const result = camera.stopPlayCloudData();
if (result === 0) {
console.log("Video stopped successfully")
;}
功能描述
获取指定时间段的云存储事件列表。
函数签名
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
注意
事件包括移动检测、声音检测等触发的录像事件
示例
const events = await camera.getCloudEvents("device_123", startTime, endTime);
if (events && events.data) {
console.log("Cloud events:", events.data)
;}
功能描述
下载指定时间段的云存储视频到本地。
函数签名
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
注意
下载进度通过监听器回调通知
示例
const taskId = await camera.downloadCloudVideo(
"device_123", startTime, endTime,
"/path/to/save", "video.mp4", "thumb.jpg"
);
功能描述
取消云存储视频下载任务。
函数签名
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(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(devId: string): number | undefined
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| devId | string | 设备ID字符串 |
返回值
number | undefined: 操作结果码,undefined表示操作失败
注意
只能恢复已暂停的下载任务
示例
const result = camera.resumeCloudDataDownload("device_123");
if (result === 0) {
console.log("Download resumed")
;}
功能描述
设置云存储视频播放速度。
函数签名
setPlayCloudDataSpeed(speed: ThingCameraConstants.PlaySpeedLevel): number;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| speed | ThingCameraConstants.PlaySpeedLevel | 播放速度级别枚举值 |
返回值
number: 操作结果码,0表示成功,其他值表示失败
注意
只能在播放云存储视频时设置播放速度
示例
const result = camera.setPlayCloudDataSpeed(ThingCameraConstants.PlaySpeedLevel.NORMAL);
if (result === 0) {
console.log("播放速度设置成功");
}
功能描述
开始本地录制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("开始录制视频");
}
功能描述
停止本地MP4视频录制。
函数签名
stopRecordLocalMp4(): number;
参数说明
无
返回值
number: 操作结果码,0表示成功,其他值表示失败
注意
只能停止正在进行的录制操作
示例
const result = camera.stopRecordLocalMp4();
if (result === 0) {
console.log("停止录制成功");
}
功能描述
截取当前视频画面并保存为图片文件。
函数签名
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(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);
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈