更新时间:2024-03-04 08:53:08
涂鸦为智能摄像机 (IPC) 提供云存储服务,可以将 IPC 录制的视频上传到云端。
云存储服务过期后,已经上传的云视频还会保留一段时间,通常是 7 天。之后,云视频会被全部删除。
获取有云存储视频的日期。
获取指定日期的相关数据,包括云存储事件、时间轴数据、鉴权信息等。
选择一个云存储事件或者一个时间点,开始播放云视频。
IThingIPCCloud
是云存储的 API 集合,所以提供了设备是否支持云存储能力的方法。
接口说明
boolean isSupportCloudStorage(String devId);
参数说明
参数 | 说明 |
---|---|
devId | 设备 ID |
示例代码
IThingIPCCloud cloud = ThingIPCSdk.getCloud();
if (cloud != null) {
isSupportCloudStorage = cloud.isSupportCloudStorage(devId);
}
开通云存储服务请使用 云存储服务 UI 业务包,该组件提供了云存储服务开通的 H5 页面和订单展示功能。
IThingCloudCamera
提供了云视频存储相关的接口。
接口说明
创建云存储的实例对象。
IThingCloudCamera createCloudCamera();
示例代码
private IThingCloudCamera cloudCamera;
IThingIPCCloud cloud = ThingIPCSdk.getCloud();
if (cloud != null) {
cloudCamera = cloud.createCloudCamera();
}
接口说明
void queryCloudServiceStatus(String devId, IThingResultCallback<CloudStatusBean> callback);
参数说明
参数 | 说明 |
---|---|
devId | 设备 ID |
callback | 回调方法 |
示例代码
cloudCamera.queryCloudServiceStatus(devId, new IThingResultCallback<CloudStatusBean>() {
@Override
public void onSuccess(CloudStatusBean result) {
//Get cloud storage status
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
CloudStatusBean
数据模型
参数 | 说明 |
---|---|
status | 状态码:
|
接口说明
void getCloudDays(String devId, String timezoneId, IThingResultCallback<List<CloudDayBean>> callback);
参数说明
参数 | 说明 |
---|---|
devId | 设备 ID |
timezoneId | 时区 ID |
示例代码
cloudCamera.getCloudDays(devId, TimeZone.getDefault().getID(), new IThingResultCallback<List<CloudDayBean>>() {
@Override
public void onSuccess(List<CloudDayBean> result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
CloudDayBean
数据模型
参数 | 说明 |
---|---|
uploadDay | 日期 |
currentDayStart | 对应日期的开始时间,用于获取指定时间内的视频片段 |
currentDayEnd | 对应日期的结束时间,用于获取指定时间内的视频片段 |
接口说明
void getTimeLineInfo(String devId, long timeGT, long timeLT, IThingResultCallback<List<TimePieceBean>> callback);
参数说明
参数 | 说明 |
---|---|
devId | 设备 ID |
timeGT | 10 位时间戳格式的开始时间 |
timeLT | 10 位时间戳格式的结束时间 |
callback | 回调方法 |
示例代码
CloudDayBean dayBean = dayBeanList.get(0);
cloudCamera.getTimeLineInfo(devId, dayBean.getCurrentStartDayTime(), dayBean.getCurrentDayEndTime(), new IThingResultCallback<List<TimePieceBean>>() {
@Override
public void onSuccess(List<TimePieceBean> result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
AITimePieceBean
数据模型
参数 | 说明 |
---|---|
startTime | 视频开始时间 Unix 时间戳 |
endTime | 视频结束时间 Unix 时间戳 |
aiCode | AI 事件片段 ID |
接口说明
void getMotionDetectionInfo(String devId, long timeGT, long timeLT, int offset, int limit, IThingResultCallback<List<TimeRangeBean>> callback);
参数说明
参数 | 说明 |
---|---|
devId | 设备 ID |
timeGT | 10 位时间戳格式的开始时间 |
timeLT | 10 位时间戳格式的结束时间 |
offset | 第几页,默认为 0 |
limit | 每次拉取条数,默认为 -1 ,表示所有数据 |
callback | 回调方法 |
TimeRangeBean
数据模型
参数 | 说明 |
---|---|
describe | 移动侦测信息描述 |
startTime | 移动侦测事件开始时间 |
endTime | 移动侦测事件结束时间 |
snapshotUrl | 移动侦测事件图片 |
v | 版本,2 表示图片已加密 |
示例代码
CloudDayBean dayBean = dayBeanList.get(0);
cloudCamera.getMotionDetectionInfo(devId, dayBean.getCurrentStartDayTime(), dayBean.getCurrentDayEndTime(), offset, limit, new IThingResultCallback<List<TimeRangeBean>>() {
@Override
public void onSuccess(List<TimeRangeBean> result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
云存储事件中携带的事件截图是经过加密的,需要通过加密图片组件展示。详情参考 加密图片 云存储事件章节。
接口说明
void getCloudSecret(String devId, ResultListener<JSONObject> callback)
参数说明
参数 | 说明 |
---|---|
devId | 设备 ID |
Business.ResultListener | 回调方法 |
示例代码
CloudBusiness cloudBusiness =new CloudBusiness();
cloudBusiness.getCloudSecret(devId, new Business.ResultListener<JSONObject>() {
@Override
public void onFailure(BusinessResponse bizResponse, JSONObject bizResult, String apiName) {
}
@Override
public void onSuccess(BusinessResponse bizResponse, JSONObject bizResult, String apiName) {
mEncryptKey = bizResult.getString("encryptKey");
}
});
错误码 | 说明 |
---|---|
-2000 | 保存云存储片段文件信息失败 |
-2001 | 云存储鉴权认证信息为空 |
-2002 | 云存储获取播放 URL 解析失败 |
设备是否开启 AI 检测能力
接口说明
void queryAIDetectConfig(String devId, IThingResultCallback<AIDetectConfigBean> callback);
AIDetectConfigBean
数据模型
参数 | 说明 |
---|---|
switchState | 设备 AI 检测能力是否开启
|
isAiDevice | 设备是否有 AI 检测能力 |
aiItemList | 支持检测的 AI 物种数据信息 |
AIDetectEventBean
数据模型
参数 | 说明 |
---|---|
aiCode | AI 标识符 |
aiCodeIcon | AI 模型图标 |
aiCodeDesc | AI 描述信息 |
configState | 当前模型是否开启
|
orderValue | 当前模型排序值 |
示例代码
cloudCamera.queryAIDetectConfig(getDevId(), new IThingResultCallback<AIDetectConfigBean>() {
@Override
public void onSuccess(AIDetectConfigBean result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
开启、关闭设备 AI 检测功能。
接口说明
void enableAIDetect(String devId, boolean enable, IThingResultCallback<Boolean> callback);
参数说明
参数 | 说明 |
---|---|
devId | 设备 ID |
enable | 是否开启 AI 检测功能 |
示例代码
cloudCamera.enableAIDetect(getDevId(), enable, new IThingResultCallback<AIDetectConfigBean>() {
@Override
public void onSuccess(Boolean result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
接口说明
void enableAIDetectEventType(String devId, String aiCode, int enableState, IThingResultCallback<Boolean> callback);
参数说明
参数 | 说明 |
---|---|
devId | 设备 ID |
aiCode | AI 事件 标识 ID |
enableState | 是否可用
|
示例代码
cloudCamera.enableAIDetectEventType(getDevId(), aiCode, enableState, new IThingResultCallback<AIDetectConfigBean>() {
@Override
public void onSuccess(Boolean result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
开启 AI 云存储服务后,设备通过侦测报警上报的事件,AI 算法能够精准识别到上报事件中是否包含用户设置的物种,目前支持设置的物种有人形、宠物、车辆、包裹。
AI 云存储的 报警事件 和 侦测报警消息,和普通云存储的逻辑一致。
接口说明
void getMotionDetectionInfo(String devId, String aiCodes, long timeGT, long timeLT, int offset, int limit, IThingResultCallback<List<TimeRangeBean>> callback);
参数说明
参数 | 说明 |
---|---|
devId | 设备 ID |
aiCodes | AI 事件 ID,例如 ai_package,ai_human |
timeGT | 10 位时间戳格式的开始时间 |
timeLT | 10 位时间戳格式的结束时间 |
offset | 第几页,默认为 0 |
limit | 每次拉取条数,默认为 -1 ,表示所有数据 |
callback | 回调方法 |
创建设备对象。
接口说明
void createCloudDevice(String cachePath, String devId)
参数说明
参数 | 说明 |
---|---|
cachePath | 缓存路径 |
devId | 设备 ID |
示例代码
cloudCamera.createCloudDevice(cachePath, devId);
接口说明
void deinitCloudCamera();
示例代码
cloudCamera.deinitCloudCamera();
接口说明
public void destroy();
示例代码
cloudCamera.destroy();
向 IThingCloudCamera
注册监听器,否则无法正常显示画面。
接口说明
void registorOnP2PCameraListener(OnP2PCameraListener listener);
参数说明
参数 | 说明 |
---|---|
listener | P2P 回调 |
示例代码
cloudCamera.registorOnP2PCameraListener(new AbsP2pCameraListener() {
@Override
public void onSessionStatusChanged(Object camera, int sessionId, int sessionStatus) {
super.onSessionStatusChanged(camera, sessionId, sessionStatus);
}
});
接口说明
void removeOnP2PCameraListener();
示例代码
cloudCamera.removeOnP2PCameraListener();
接口说明
void generateCloudCameraView(IRegistorIOTCListener view);
参数说明
参数 | 说明 |
---|---|
view | 播放器组件 |
示例代码
cloudCamera.generateCloudCameraView(mVideoView);
接口说明
void playCloudDataWithStartTime(long mStartTime, long mEndTime, boolean isEvent, OperationCallBack callback, OperationCallBack playFinishedCallBack);
参数说明
参数 | 说明 |
---|---|
mStartTime | 10 位时间戳格式的开始时间 |
mEndTime | 结束时间,一般是这一天的结束时间 |
isEvent | 是否是侦测事件,默认为 false |
callBack | 播放回调 |
playFinishedCallBack | 播放结束回调 |
示例代码
cloudCamera.playCloudDataWithStartTime(startTime, endTime, isEvent,
new OperationCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data, Object camera) {
// 播放中的回调, playing
}
@Override
public void onFailure(int sessionId, int requestId, int errCode, Object camera) {
}
}, new OperationCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data, Object camera) {
//播放完成的回调, playCompleted
}
@Override
public void onFailure(int sessionId, int requestId, int errCode, Object camera) {
}
});
接口说明
int pausePlayCloudVideo(OperationDelegateCallBack callBack);
参数说明
参数 | 说明 |
---|---|
callBack | 操作回调 |
示例代码
cloudCamera.pausePlayCloudVideo(new OperationDelegateCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data) {
}
@Override
public void onFailure(int sessionId, int requestId, int errCode) {
}
});
接口说明
int resumePlayCloudVideo(OperationDelegateCallBack callBack);
参数说明
参数 | 说明 |
---|---|
callBack | 操作回调 |
示例代码
cloudCamera.resumePlayCloudVideo(new OperationDelegateCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data) {
}
@Override
public void onFailure(int sessionId, int requestId, int errCode) {
}
});
接口说明
int stopPlayCloudVideo(OperationDelegateCallBack callBack);
参数说明
参数 | 说明 |
---|---|
callBack | 操作回调 |
示例代码
cloudCamera.stopPlayCloudVideo(new OperationDelegateCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data) {
}
@Override
public void onFailure(int sessionId, int requestId, int errCode) {
}
});
接口说明
void startCloudDataDownload(long startTime, long stopTime, String folderPath, String mp4FileName,
OperationCallBack callback, ProgressCallBack progressCallBack, OperationCallBack finishedCallBack);
参数说明
参数 | 说明 |
---|---|
startTime | 需要下载的视频片段的开始时间,10 位时间戳 |
stopTime | 需要下载的视频片段的结束时间,10 位时间戳 |
folderPath | 存储路径 |
mp4FileName | 文件名 |
callback | 操作回调 |
progressCallBack | 下载进度回调 |
finishedCallBack | 下载完成回调 |
接口说明
void stopCloudDataDownload(OperationCallBack callBack);
参数说明
参数 | 说明 |
---|---|
callBack | 操作回调 |
接口说明
void deleteCloudVideo(String devId, long timeGT, long timeLT, boolean isAllDay, String timeZone, IThingResultCallback<String> listener);
参数说明
参数 | 说明 |
---|---|
devId | 设备 ID |
timeGT | 10 位时间戳格式的开始时间 |
timeLT | 结束时间 |
isAllDay | 是否是删除整天 |
timeZone | 时区 |
listener | 回调方法 |
接口说明
int startRecordLocalMp4(String folderPath, String fileName, OperationDelegateCallBack callBack);
参数说明
参数 | 说明 |
---|---|
folderPath | 文件夹路径 |
fileName | 文件名称 |
callBack | 操作回调 |
示例代码
cloudCamera.startRecordLocalMp4(IPCCameraUtils.recordPath(devId), String.valueOf(System.currentTimeMillis()), new OperationDelegateCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data) {
Toast.makeText(CameraCloudStorageActivity.this, "record start success", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(int sessionId, int requestId, int errCode) {
}
});
接口说明
int stopRecordLocalMp4(OperationDelegateCallBack callBack);
参数说明
参数 | 说明 |
---|---|
callBack | 操作回调 |
示例代码
cloudCamera.stopRecordLocalMp4(new OperationDelegateCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data) {
Toast.makeText(CameraCloudStorageActivity.this, "record end success", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(int sessionId, int requestId, int errCode) {
}
});
云存储视频播放也提供有声音开关、截图等功能。
接口说明
int getCloudMute();
示例代码
cloudCamera.getCloudMute()
接口说明
void setCloudMute(final int mute, OperationDelegateCallBack callBack);
参数说明
参数 | 说明 |
---|---|
mute | 是否静音:
|
callBack | 操作回调 |
示例代码
cloudCamera.setCloudMute(mute, new OperationDelegateCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data) {
soundState = Integer.valueOf(data);
}
@Override
public void onFailure(int sessionId, int requestId, int errCode) {
}
});
接口说明
int snapshot(String absoluteFilePath, OperationDelegateCallBack callBack);
参数说明
参数 | 说明 |
---|---|
absoluteFilePath | 文件地址 |
callBack | 操作回调 |
示例代码
cloudCamera.snapshot(IPCCameraUtils.recordSnapshotPath(devId), new OperationDelegateCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data) {
Toast.makeText(CameraCloudStorageActivity.this, "snapshot success", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(int sessionId, int requestId, int errCode) {
}
});
在开始播放调用成功后设置倍速播放,音频不支持倍速状态。
接口说明
void setPlayCloudDataSpeed(int speed, OperationCallBack operationCallBack);
参数说明
参数 | 说明 |
---|---|
speed | 播放倍速,支持 1、2、4 倍速,枚举值 CloudPlaySpeed |
operationCallBack | 操作回调 |
CloudPlaySpeed
枚举值
CloudPlaySpeed.MULTIPLE_1, // 1.0 倍速
CloudPlaySpeed.MULTIPLE_2, // 2.0 倍速
CloudPlaySpeed.MULTIPLE_4, // 4.0 倍速
示例代码
mCloudCamera.setPlayCloudDataSpeed(speed, new OperationCallBack() {
@Override
public void onSuccess(int sessionId, int requestId, String data, Object camera) {
// TODO " setPlayCloudDataSpeed onSuccess"
}
@Override
public void onFailure(int sessionId, int requestId, int errCode, Object camera) {
}
});
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈