更新时间:2026-01-26 08:04:43下载pdf
ThingCloudCamera 是一个用于管理智能摄像头云端功能的接口,提供了云存储视频播放、下载、时间轴数据获取等功能。
功能描述
绑定 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<ThingCameraCloudDay>> | null>:包含云存储日期数组的响应对象,失败时返回 null。
需要先调用 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<ThingCameraCloudStateBeans> | undefined>:云存储状态响应对象。
这是使用云存储功能前必须调用的初始化方法。
示例
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 | 分类标识符:
|
| 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<ThingCameraCloudEventBeans> | undefined>:云存储事件数据。
事件包括移动检测、声音检测等触发的录像事件。
示例
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<number>:下载任务 ID,用于管理下载任务。
下载进度通过监听器回调通知。
示例
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);
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈