更新时间:2024-07-17 08:29:33下载pdf
涂鸦为智能摄像机(IPC)提供云存储服务,可以将 IPC 录制的视频上传到云端。
判断设备是否支持云存储能力,支持则继续。
查询云存储服务的开通状态。
根据开通状态,判断后续逻辑。
如果云存储服务未开通或者已经过期,就需要先购买云存储服务。
云存储服务过期后,已经上传的云视频还会保留一段时间,通常是 7 天。之后,云视频会被全部删除。
如果云存储服务在有效期:
演示录屏 | 类 | 接口 | 描述 | 备注 |
---|---|---|---|---|
ThingSmartCloudManager | + (BOOL)isSupportCloudStorage: | 是否支持云存储 | - | |
- (instancetype)initWithDeviceId: | 创建云存储管理对象 | 一个设备 ID 对应一个云存储管理对象 | ||
- (void)loadCloudData: | 加载云存储数据 | 回调中有对应 state。如果 state 有效,则直接查询云存储数据,详细状态请查看 ThingSmartCloudState | ||
- (void)timeLineWithCloudDay:success:failure: | 查询指定日期的云存储片段 | 返回当天所有视频片段时间数据模型(ThingSmartCloudTimePieceModel)的数组 | ||
- (void)queryAIDetectConfigSuccess:failure: | 查询设备 AI 云存储设置信息 |
|
||
- (void)enableAIDetect:success:failure: | 设置 AI 检测开关状态 | enable:是否开启 AI 检测功能 | ||
- (void)timeEventsWithCloudDay:offset:limit:aiCodes:success:failure: | 查询云存储事件 |
|
||
- (int)playCloudVideoWithStartTime:endTime:isEvent:onResponse:onFinished: | 开始播放云存储 | isEvent:是否播放的是云存储事件 | ||
- (int)stopPlayCloudVideo | 停止播放云存储 | - | ||
- (void)destroy | 销毁资源 | - | ||
ThingSmartCloudManagerDelegate | - (void)cloudManager:didReceivedFrame:videoFrameInfo: | 云视频数据代理回调 | 默认播放器已绑定。如果自定义渲染视频,可设置 autoRender 为 NO,通过回调渲染视频,frameBuffer 为视频帧 YUV 数据。 |
云存储服务开通需要使用 云存储服务 UI 业务包,该组件提供了云存储开通的 H5 页面和订单展示功能。
- (void)loadCloudData:(void(^)(ThingSmartCloudState state))complete;
- (void)timeLineWithCloudDay:(ThingSmartCloudDayModel *)cloudDay
success:(void(^)(NSArray<ThingSmartCloudTimePieceModel *> * timePieces))success
failure:(void(^)(NSError * error))failure;
- (void)playCloudVideoWithStartTime:(long)startTime
endTime:(long)endTime
isEvent:(BOOL)isEvent
onResponse:(void(^)(int errCode))responseCallback
onFinished:(void(^)(int errCode))finishedCallback;
- (int)stopPlayCloudVideo;
//初始化云存储管理类
- (void)cloudstorageManagerInit {
// 查询是否支持云存储
BOOL isSupportCloudStorage = [ThingSmartCloudManager isSupportCloudStorage:self.devId];
// 创建云存储管理类
_cloudManager = [[ThingSmartCloudManager alloc] initWithDeviceId:self.devId];
[_cloudManager enableMute:NO success:nil failure:nil];
_cloudManager.delegate = self;
}
// 查询云存储开通状态
- (void)queryCloudstroageState {
__weak typeof(self) weakSelf = self;
[self.cloudManager loadCloudData:^(ThingSmartCloudState state) {
if (state == ThingSmartCloudStateValidData || state == ThingSmartCloudStateExpiredData) {
weak_self.cloudStorageDays = weak_self.cloudManager.cloudDays;
weak_self.selectedDay = weak_self.cloudManager.cloudDays.lastObject;
if (state == ThingSmartCloudStateExpiredData) {
//提示已过期,开通云存储
}
} else {
//提示开通云存储
}
}];
}
// 获取视频片段
- (void)queryTimePieces {
[self.cloudManager timeLineWithCloudDay:self.selectedDay success:^(NSArray<ThingSmartCloudTimePieceModel *> *timePieces) {
// Succeeded
} failure:^(NSError *error) {
// Failed
}];
}
// 播放云储存片段
-(void)playVideoWithTimePiece:(ThingSmartCloudTimePieceModel *)timePiece {
[self.cloudManager playCloudVideoWithStartTime:timePiece.startTime endTime:self.selectedDay.endTime isEvent:NO onResponse:^(int errCode) {
if (errCode == 0) {
// Succeeded
}else {
// Failed
}
} onFinished:^(int errCode) {
// finished
if (errCode != 0) {
// Error
}
}];
}
//播放云存储事件
- (void)playVideoEvent:(ThingSmartCloudTimeEventModel *)event {
[self.cloudManager playCloudVideoWithStartTime:event.startTime endTime:self.selectedDay.endTime isEvent:YES onResponse:^(int errCode) {
if (errCode == 0) {
// Succeeded
}else {
// Failed
}
} onFinished:^(int errCode) {
// finished
if (errCode != 0) {
// Error
}
}];
}
// 停止播放
- (void)stopPlayCloudVideo {
[self.cloudManager stopPlayCloudVideo];
}
// 销毁
- (void)destroy {
[self.cloudManage destroy];
}
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈