跳到主要内容

存储卡

更新时间:2025-12-31 14:54:05
// 导入头文件
import { RTCXSDCardPlayback, RTCXPlaybackTypes } from 'rtcxsdk'

SD卡存储录像调用接口

export interface IRTCXSDCardPlayback {
/**
* 按时间段获取SD卡录制文件
*
* @param params - 请求参数
* @public
*/
recordTimeQuery(params: SDCardRecordQueryReq): Promise<RecordQueryRsp>

/**
* 按文件获取SD卡录制文件
*
* @param params - 请求参数 [SDCardRecordQueryReq]
*/
recordFileQuery(params: SDCardRecordQueryReq): Promise<SDCardRecordFileQueryRsp>

/**
* 按时间段获取事件文件
*
* @param params - 请求参数 [SDCardEventQueryReq]
*/
eventTimeQuery(params: SDCardEventQueryReq): Promise<EventQueryRsp>

/**
* 按月查询录制统计
*
* @param monthQueryReq - [SDCardRecordMonthQueryReq]
*/
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判断是否支持数据压缩
// sd卡回放
const reqParams: RTCXPlaybackTypes.SDCardRecordQueryReq = {
productKey: this.deviceInfo?.productKey!!,
deviceName: this.deviceInfo?.deviceName!!,
beginTime: startOfDate(this.selectedDate).getTime(),
endTime: endOfDate(this.selectedDate).getTime(),
pageSize: 1000
}
try {
const rsp = await RTCXSDCardPlayback.recordTimeQuery(reqParams)
this.dataList = rsp.recordFileList
} catch (e) {
showToast(this, `获取数据失败${e}`)
}

SD卡事件列表

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

  • 分页规则:
    • 设置pageSize参数,如pageSize = 50

    • 当响应的EventQueryRsp.nextValid = true,说明可以继续查询下一页数据,否则没有可查询的更多数据了;

    • 查询下一页时,入参beginTime为上一次的beginTime,endTime为上一次的EventQueryRsp.nextEndTime。

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

SD卡文件列表

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

  • 分页规则:
    • 设置pageSize参数,如pageSize = 50

    • 当响应的SDCardRecordFileQueryRsp.nextValid = true,说明可以继续查询下一页数据,否则没有可查询的更多数据了;

    • 查询下一页时,入参beginTime为上一次的beginTime,endTime为上一次的SDCardRecordFileQueryRsp.nextEndTime。

const reqParams: RTCXPlaybackTypes.SDCardRecordQueryReq = {
productKey: this.deviceInfo?.productKey!!,
deviceName: this.deviceInfo?.deviceName!!,
beginTime: startOfDate(this.selectedDate).getTime(),
endTime: endOfDate(this.selectedDate).getTime(),
pageSize: 30
}
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: startOfDate(this.selectedDate).getTime(),
endTime: year,
month: month
}
try {
const rsp = await RTCXSDCardPlayback.monthRecordQuery(reqParams)
} catch (e) {
showToast(this, `获取数据失败${e}`)
}

SD卡录制播放

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. APP通过定时器(定时间隔设置1秒)实时调用播放器 【getCurrentTime(): number】方法获取当前播放时间currenTime
  2. 使用获取到的实时播放时间currenTime与正在播放事件的结束时间endTime比较,如果currenTime >= endTime,则认为该事件播放结束
  3. APP判定事件播放结束后,需要调用播放器【releasePlayer(): void】方法主动结束事件播放,否则播放器会一直往下播