帮你快速理解、总结文档立即下载

录制与截图

最近更新时间:2026-07-30 12:00:37

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

应用端接入

截图

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

接口说明

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

调用示例

Android
iOS
// 发起截图
session.takeSnapshot(0);

// 在 TXIoTMonitorSessionListener 中接收结果
@Override
public 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 三个回调返回。

接口说明

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

调用示例

Android
iOS
// 开始录制
TXIoTLocalRecordingParams params = new TXIoTLocalRecordingParams();
params.channelId = 0;
params.outputPath = getExternalFilesDir(null) + "/record.mp4";
session.startLocalRecording(params);

// 结束录制
session.stopLocalRecording();

// 录制状态回调(TXIoTMonitorSessionListener)
@Override
public void onLocalRecordBegin(int errCode, String storagePath) { }

@Override
public void onLocalRecording(long durationMs, String storagePath) { }

@Override
public 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
Android
iOS
错误码
说明
建议处理方式
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 所在目录已存在且应用有写入权限。
录制过程中应用退到后台后录制中断。
本地录制依赖持续拉流,应用退后台被系统回收会中断录制,建议在退后台前自动停止录制。