物联网开发平台 录制与截图

这篇将介绍安防监控场景下的录制与截图功能。录制与截图为纯应用端能力:应用端对正在拉取的监控画面进行截图或本地录制,设备端无需接入任何工作。

相关产品
物联网开发平台 产品页,含版本规格、价格与购买入口。

一、截图

在查看监控(startRemoteView 成功)期间,调用 takeSnapshot 对指定通道的当前画面截图,截图结果通过 onSnapshotComplete 回调返回。

二、接口说明

方法 / 回调 说明
takeSnapshot 对 channelId 通道的当前画面发起截图。
onSnapshotComplete 截图完成回调,返回 channelId、图片对象与错误码。

三、调用示例

AndroidiOS// 发起截图session.takeSnapshot(0);// 在 TXIoTMonitorSessionListener 中接收结果@Overridepublic void onSnapshotComplete(int channelId, Bitmap image, int errCode) { if (errCode == 0 && image != null) { // 保存或展示截图 saveBitmapToAlbum(image); } else { Log.e(TAG, "snapshot failed: " + errCode); }}// 发起截图[session takeSnapshot:0];// 在 TXIoTMonitorSessionDelegate 中接收结果- (void)onSnapshotComplete:(int)channelId image:(UIImage *)image errCode:(int)errCode { if (errCode == 0 && image) { // 保存或展示截图 UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil); } else { NSLog(@"snapshot failed: %d", errCode); }}

四、本地录制

在监控查看期间,调用 startLocalRecording 将当前通道画面录制为本地视频文件,调用 stopLocalRecording 结束录制。录制状态通过 onLocalRecordBegin / onLocalRecording / onLocalRecordComplete 三个回调返回。

五、接口说明

方法 / 回调 说明
startLocalRecording 开始本地录制,参数为 TXIoTLocalRecordingParams。
stopLocalRecording 结束本地录制。
onLocalRecordBegin 录制开始回调,返回 errCode 与录制文件路径。
onLocalRecording 录制中进度回调,每秒钟回调一次已录制时长 durationMs 与文件路径。
onLocalRecordComplete 录制结束回调,返回 errCode 与最终录制文件路径。

六、调用示例

AndroidiOS// 开始录制TXIoTLocalRecordingParams params = new TXIoTLocalRecordingParams();params.channelId = 0;params.outputPath = getExternalFilesDir(null) + "/record.mp4";session.startLocalRecording(params);// 结束录制session.stopLocalRecording();// 录制状态回调(TXIoTMonitorSessionListener)@Overridepublic void onLocalRecordBegin(int errCode, String storagePath) { }@Overridepublic void onLocalRecording(long durationMs, String storagePath) { }@Overridepublic void onLocalRecordComplete(int errCode, String storagePath) { if (errCode == 0) { // 录制成功,storagePath 为最终文件路径 }}// 开始录制TXIoTLocalRecordingParams *params = [[TXIoTLocalRecordingParams alloc] init];params.channelId = 0;params.outputPath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"record.mp4"];[session startLocalRecording:params];// 结束录制[session stopLocalRecording];// 录制状态回调(TXIoTMonitorSessionDelegate)- (void)onLocalRecordBegin:(int)errCode storagePath:(NSString *)storagePath { }- (void)onLocalRecording:(int64_t)durationMs storagePath:(NSString *)storagePath { }- (void)onLocalRecordComplete:(int)errCode storagePath:(NSString *)storagePath { if (errCode == 0) { // 录制成功,storagePath 为最终文件路径 }}

七、错误处理

录制与截图涉及本地文件写入,以下错误码在录制或截图过程中可能返回,完整错误码定义见 TXIoTErrorCode。

AndroidiOS

错误码 说明 建议处理方式
ERR_RECORD_DURATION_TOO_SHORT 录像时长过短。 过短的录像可忽略。
ERR_FILE_PATH_UNWRITABLE 文件路径不可写。 确认保存目录存在且有写入权限。
ERR_FILE_PATH_ALREADY_EXIST 文件已存在。 使用新的文件路径,避免覆盖已有文件。
错误码 数值 说明 建议处理方式
TXIoTErrorCodeRecordDurationTooShort -2007 录像时长过短。 过短的录像可忽略。
TXIoTErrorCodeFilePathUnwritable -2008 文件路径不可写。 确认保存目录存在且有写入权限。
TXIoTErrorCodeFilePathAlreadyExist -2009 文件已存在。 使用新的文件路径,避免覆盖已有文件。

八、常见问题

现象 排查建议
onSnapshotComplete 返回非 0 错误码。 确认调用 takeSnapshot 时该通道正在拉流(startRemoteView 已成功且画面已渲染),无画面时无法截图。
录制文件无法生成或打开。 确认 outputPath 所在目录已存在且应用有写入权限。
录制过程中应用退到后台后录制中断。 本地录制依赖持续拉流,应用退后台被系统回收会中断录制,建议在退后台前自动停止录制。
赞 (0)
上一篇 4天前
下一篇 4天前