跳到主要内容

存储卡

更新时间:2026-10-29 10:05:40

SD卡存储录像相关接口与【通用版-存储卡】相同,区别在于专属版在构建请求对象时,需要将 deviceType 设置为 1,用于区分专属版设备。

// 导入存储卡回看头文件
import { RTCXSDCardPlayback, RTCXPlaybackTypes, RTCXMediaType } from 'rtcxsdk'

专属版目前支持如下接口:

export interface IRTCXSDCardPlayback {
/**
* 按时间段获取SD卡录制文件
*/
recordTimeQuery(params: SDCardRecordQueryReq): Promise<RecordQueryRsp>

/**
* 按文件获取SD卡录制文件
*/
recordFileQuery(params: SDCardRecordQueryReq): Promise<SDCardRecordFileQueryRsp>

/**
* 按时间段获取事件文件
*/
eventTimeQuery(params: SDCardEventQueryReq): Promise<EventQueryRsp>

/**
* 按月查询录制统计
*/
monthRecordQuery(monthQueryReq: SDCardRecordMonthQueryReq): Promise<MonthQueryRsp>
}

SD卡录制列表​

时间跨度不能超过7天,开始时间不能大于结束时间。

备注:该接口默认一次性返回 beginTime 和 endTime 时间段内所有数据,如果时间跨度较大,查询可能比较耗时,推荐按天查询,即 0 点 - 24 点,或者通过分页查询。

  • 分页规则:
    • 设置 pageSize 参数,如 pageSize = 50;
    • 当响应的 RecordQueryRsp.nextValid = true,说明可以继续查询下一页数据,否则没有更多数据;
    • 查询下一页时,入参 beginTime 为上一次的 beginTime,endTime 为上一次的 RecordQueryRsp.nextEndTime。

请求入参说明:

  • compressAck 参数可控制接口返回数据是否需要压缩(压缩处理可以传输更多数据),如果设备支持压缩,推荐设置 compressAck = 1;
  • 判断设备是否支持压缩,可以通过设备能力集属性 deviceSdkAbility 中的 [1,2,4,7] 是否包含 7 判断。
const reqParams: RTCXPlaybackTypes.SDCardRecordQueryReq = {
productKey: this.deviceInfo?.productKey!!,
deviceName: this.deviceInfo?.deviceName!!,
beginTime: startOfDate(this.selectedDate).getTime(),
endTime: endOfDate(this.selectedDate).getTime(),
pageSize: 1000,
deviceType: 1 // 1:专属版设备
}
try {
const rsp = await RTCXSDCardPlayback.recordTimeQuery(reqParams)
this.dataList = rsp.recordFileList
} catch (e) {
showToast(this, `获取数据失败${e}`)
}

SD卡事件列表​

分页规则与录制列表一致,下一页结束时间取 EventQueryRsp.nextEndTime。

const reqParams: RTCXPlaybackTypes.SDCardEventQueryReq = {
productKey: this.deviceInfo?.productKey!!,
deviceName: this.deviceInfo?.deviceName!!,
beginTime: startOfDate(this.selectedDate).getTime(),
endTime: endOfDate(this.selectedDate).getTime(),
pageSize: 1000,
deviceType: 1 // 1:专属版设备
}
try {
const rsp = await RTCXSDCardPlayback.eventTimeQuery(reqParams)
this.dataList = rsp.eventList
} catch (e) {
showToast(this, `获取数据失败${e}`)
}

SD卡文件列表​

const reqParams: RTCXPlaybackTypes.SDCardRecordQueryReq = {
productKey: this.deviceInfo?.productKey!!,
deviceName: this.deviceInfo?.deviceName!!,
beginTime: startOfDate(this.selectedDate).getTime(),
endTime: endOfDate(this.selectedDate).getTime(),
pageSize: 30,
deviceType: 1 // 1:专属版设备
}
try {
const rsp = await RTCXSDCardPlayback.recordFileQuery(reqParams)
this.dataList = rsp.recordFileList
} catch (e) {
showToast(this, `获取数据失败${e}`)
}

SD卡月录像列表​

const reqParams: RTCXPlaybackTypes.SDCardRecordMonthQueryReq = {
productKey: this.deviceInfo?.productKey!!,
deviceName: this.deviceInfo?.deviceName!!,
year: this.selectedDate.getFullYear(),
month: this.selectedDate.getMonth() + 1,
deviceType: 1 // 1:专属版设备
}
try {
const rsp = await RTCXSDCardPlayback.monthRecordQuery(reqParams)
} catch (e) {
showToast(this, `获取数据失败${e}`)
}

SD卡录制播放​

播放器初始化时设置 deviceType = 1,具体见【音视频播放】。

const playbackInfo: RTCXMediaType.IPlaybackInfo = {
startTime: beginT!,
endTime: endT!,
playbackType: RTCXMediaType.PlaybackTypeEnum.SDCardRecord
}
this.playerController?.seekToTime(playbackInfo)

SD卡文件播放​

const playbackInfo: RTCXMediaType.IPlaybackInfo = {
startTime: beginT!,
endTime: endT!,
playbackType: RTCXMediaType.PlaybackTypeEnum.SDCardRecord,
sdFileName: sdFileName,
sdFileStartTime: sdFileStartTime
}
this.playerController?.seekToTime(playbackInfo)

SD卡事件播放​

const playbackInfo: RTCXMediaType.IPlaybackInfo = {
startTime: beginT!,
endTime: endT!,
playbackType: RTCXMediaType.PlaybackTypeEnum.SDCardEvent
}
this.playerController?.seekToTime(playbackInfo)

当SD卡事件播放时,播放器不会主动上抛事件播放结束的状态,该逻辑需要 APP 自行实现:

  1. 通过定时器(定时间隔设置 1 秒)实时调用播放器 getCurrentTime(): number 方法获取当前播放时间 currentTime;
  2. 使用 currentTime 与正在播放事件的结束时间 endTime 比较,如果 currentTime >= endTime,则认为该事件播放结束;
  3. 判定事件播放结束后,调用播放器 releasePlayer(): void 方法主动结束事件播放,否则播放器会一直往下播。