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