package com.ard.zlm.hook; import com.ard.zlm.api.domain.MediaInfo; import com.ard.zlm.domain.RecordInfo; import com.ard.zlm.api.domain.ZlmMediaServer; import com.ard.zlm.event.MediaArrivalEvent; import com.ard.zlm.event.MediaEvent; import com.ard.zlm.mediaServer.MediaPublishEvent; import com.ard.zlm.mediaServer.MediaRecordMp4Event; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; /** * Hook返回的内容 */ @Data public class HookData { /** * 应用名 */ private String app; /** * 流ID */ private String stream; /** * 流媒体节点 */ private ZlmMediaServer mediaServer; /** * 协议 */ private String schema; /** * 流信息 */ private MediaInfo mediaInfo; /** * 录像信息 */ private RecordInfo recordInfo; @Schema(description = "推流的额外参数") private String params; public static HookData getInstance(MediaEvent mediaEvent) { HookData hookData = new HookData(); if (mediaEvent instanceof MediaPublishEvent) { MediaPublishEvent event = (MediaPublishEvent) mediaEvent; hookData.setApp(event.getApp()); hookData.setStream(event.getStream()); hookData.setSchema(event.getSchema()); hookData.setMediaServer(event.getMediaServer()); hookData.setParams(event.getParams()); } else if (mediaEvent instanceof MediaArrivalEvent) { MediaArrivalEvent event = (MediaArrivalEvent) mediaEvent; hookData.setApp(event.getApp()); hookData.setStream(event.getStream()); hookData.setSchema(event.getSchema()); hookData.setMediaServer(event.getMediaServer()); hookData.setMediaInfo(event.getMediaInfo()); } else if (mediaEvent instanceof MediaRecordMp4Event) { MediaRecordMp4Event event = (MediaRecordMp4Event) mediaEvent; hookData.setApp(event.getApp()); hookData.setStream(event.getStream()); hookData.setSchema(event.getSchema()); hookData.setMediaServer(event.getMediaServer()); hookData.setRecordInfo(event.getRecordInfo()); } else { hookData.setApp(mediaEvent.getApp()); hookData.setStream(mediaEvent.getStream()); hookData.setSchema(mediaEvent.getSchema()); hookData.setMediaServer(mediaEvent.getMediaServer()); } return hookData; } }