diff --git a/src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java b/src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java index 1a7995ab..28e7d641 100644 --- a/src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java +++ b/src/main/java/com/genersoft/iot/vmp/common/StreamInfo.java @@ -4,11 +4,12 @@ import com.genersoft.iot.vmp.media.bean.MediaInfo; import com.genersoft.iot.vmp.media.bean.MediaServer; import com.genersoft.iot.vmp.service.bean.DownloadFileInfo; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; import java.io.Serializable; import java.util.Objects; - +@Data @Schema(description = "流信息") public class StreamInfo implements Serializable, Cloneable{ @@ -91,100 +92,15 @@ public class StreamInfo implements Serializable, Cloneable{ @Schema(description = "产生源类型,包括 unknown = 0,rtmp_push=1,rtsp_push=2,rtp_push=3,pull=4,ffmpeg_pull=5,mp4_vod=6,device_chn=7") private int originType; + @Schema(description = "originType的文本描述") + private String originTypeStr; + @Schema(description = "转码后的视频流") private StreamInfo transcodeStream; @Schema(description = "使用的WVP ID") private String serverId; - public void setFlv(StreamURL flv) { - this.flv = flv; - } - - public void setHttps_flv(StreamURL https_flv) { - this.https_flv = https_flv; - } - - public void setWs_flv(StreamURL ws_flv) { - this.ws_flv = ws_flv; - } - - public void setWss_flv(StreamURL wss_flv) { - this.wss_flv = wss_flv; - } - - public void setFmp4(StreamURL fmp4) { - this.fmp4 = fmp4; - } - - public void setHttps_fmp4(StreamURL https_fmp4) { - this.https_fmp4 = https_fmp4; - } - - public void setWs_fmp4(StreamURL ws_fmp4) { - this.ws_fmp4 = ws_fmp4; - } - - public void setWss_fmp4(StreamURL wss_fmp4) { - this.wss_fmp4 = wss_fmp4; - } - - public void setHls(StreamURL hls) { - this.hls = hls; - } - - public void setHttps_hls(StreamURL https_hls) { - this.https_hls = https_hls; - } - - public void setWs_hls(StreamURL ws_hls) { - this.ws_hls = ws_hls; - } - - public void setWss_hls(StreamURL wss_hls) { - this.wss_hls = wss_hls; - } - - public void setTs(StreamURL ts) { - this.ts = ts; - } - - public void setHttps_ts(StreamURL https_ts) { - this.https_ts = https_ts; - } - - public void setWs_ts(StreamURL ws_ts) { - this.ws_ts = ws_ts; - } - - public void setWss_ts(StreamURL wss_ts) { - this.wss_ts = wss_ts; - } - - public void setRtmp(StreamURL rtmp) { - this.rtmp = rtmp; - } - - public void setRtmps(StreamURL rtmps) { - this.rtmps = rtmps; - } - - public void setRtsp(StreamURL rtsp) { - this.rtsp = rtsp; - } - - public void setRtsps(StreamURL rtsps) { - this.rtsps = rtsps; - } - - public void setRtc(StreamURL rtc) { - this.rtc = rtc; - } - - public void setRtcs(StreamURL rtcs) { - this.rtcs = rtcs; - } - public void setRtmp(String host, int port, int sslPort, String app, String stream, String callIdParam) { String file = String.format("%s/%s%s", app, stream, callIdParam); if (port > 0) { @@ -351,205 +267,6 @@ public class StreamInfo implements Serializable, Cloneable{ private TransactionInfo transactionInfo; - public String getApp() { - return app; - } - - public void setApp(String app) { - this.app = app; - } - - public String getDeviceId() { - return deviceId; - } - - public void setDeviceId(String deviceId) { - this.deviceId = deviceId; - } - - public Integer getChannelId() { - return channelId; - } - - public void setChannelId(Integer channelId) { - this.channelId = channelId; - } - - public String getStream() { - return stream; - } - - public void setStream(String stream) { - this.stream = stream; - } - - public String getIp() { - return ip; - } - - public void setIp(String ip) { - this.ip = ip; - } - - public StreamURL getFlv() { - return flv; - } - - public StreamURL getHttps_flv() { - return https_flv; - } - - public StreamURL getWs_flv() { - return ws_flv; - } - - - public StreamURL getWss_flv() { - return wss_flv; - } - - public StreamURL getFmp4() { - return fmp4; - } - - - - public StreamURL getHttps_fmp4() { - return https_fmp4; - } - - public StreamURL getWs_fmp4() { - return ws_fmp4; - } - - public StreamURL getWss_fmp4() { - return wss_fmp4; - } - - public StreamURL getHls() { - return hls; - } - - - public StreamURL getHttps_hls() { - return https_hls; - } - - public StreamURL getWs_hls() { - return ws_hls; - } - - public StreamURL getWss_hls() { - return wss_hls; - } - - public StreamURL getTs() { - return ts; - } - - - public StreamURL getHttps_ts() { - return https_ts; - } - - - public StreamURL getWs_ts() { - return ws_ts; - } - - - public StreamURL getWss_ts() { - return wss_ts; - } - - - public StreamURL getRtmp() { - return rtmp; - } - - public StreamURL getRtmps() { - return rtmps; - } - - public StreamURL getRtsp() { - return rtsp; - } - - public StreamURL getRtsps() { - return rtsps; - } - - public StreamURL getRtc() { - return rtc; - } - - public StreamURL getRtcs() { - return rtcs; - } - - public MediaServer getMediaServer() { - return mediaServer; - } - - public void setMediaServer(MediaServer mediaServer) { - this.mediaServer = mediaServer; - } - - public MediaInfo getMediaInfo() { - return mediaInfo; - } - - public void setMediaInfo(MediaInfo mediaInfo) { - this.mediaInfo = mediaInfo; - } - - public String getStartTime() { - return startTime; - } - - public void setStartTime(String startTime) { - this.startTime = startTime; - } - - public String getEndTime() { - return endTime; - } - - public void setEndTime(String endTime) { - this.endTime = endTime; - } - - public double getProgress() { - return progress; - } - - public void setProgress(double progress) { - this.progress = progress; - } - - public boolean isPause() { - return pause; - } - - public void setPause(boolean pause) { - this.pause = pause; - } - - public TransactionInfo getTransactionInfo() { - return transactionInfo; - } - - public void setTransactionInfo(TransactionInfo transactionInfo) { - this.transactionInfo = transactionInfo; - } - - public StreamInfo getTranscodeStream() { - return transcodeStream; - } - - public void setTranscodeStream(StreamInfo transcodeStream) { - this.transcodeStream = transcodeStream; - } @Override public StreamInfo clone() { @@ -625,48 +342,4 @@ public class StreamInfo implements Serializable, Cloneable{ return instance; } - - /*=========================设备主子码流逻辑START====================*/ - @Schema(description = "是否为子码流(true-是,false-主码流)") - private boolean subStream; - - public boolean isSubStream() { - return subStream; - } - - public void setSubStream(boolean subStream) { - this.subStream = subStream; - } - - public DownloadFileInfo getDownLoadFilePath() { - return downLoadFilePath; - } - - public void setDownLoadFilePath(DownloadFileInfo downLoadFilePath) { - this.downLoadFilePath = downLoadFilePath; - } - - public int getOriginType() { - return originType; - } - - public void setOriginType(int originType) { - this.originType = originType; - } - - public String getServerId() { - return serverId; - } - - public void setServerId(String serverId) { - this.serverId = serverId; - } - - public String getCallId() { - return callId; - } - - public void setCallId(String callId) { - this.callId = callId; - } } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/EventPublisher.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/EventPublisher.java index aaea4309..9aa75b71 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/event/EventPublisher.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/EventPublisher.java @@ -6,8 +6,6 @@ import com.genersoft.iot.vmp.gb28181.bean.DeviceAlarm; import com.genersoft.iot.vmp.gb28181.bean.MobilePosition; import com.genersoft.iot.vmp.gb28181.bean.Platform; import com.genersoft.iot.vmp.gb28181.event.alarm.AlarmEvent; -import com.genersoft.iot.vmp.gb28181.event.record.RecordEndEvent; -import com.genersoft.iot.vmp.gb28181.event.device.RequestTimeoutEvent; import com.genersoft.iot.vmp.gb28181.event.subscribe.catalog.CatalogEvent; import com.genersoft.iot.vmp.gb28181.event.subscribe.mobilePosition.MobilePositionEvent; import com.genersoft.iot.vmp.media.bean.MediaServer; diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java index 8b073113..9ac1c6aa 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java @@ -78,60 +78,6 @@ public class SIPCommander implements ISIPCommander { @Autowired private MessageSubscribe messageSubscribe; - - - /** - * 云台方向放控制,使用配置文件中的默认镜头移动速度 - * - * @param device 控制设备 - * @param channelId 预览通道 - * @param leftRight 镜头左移右移 0:停止 1:左移 2:右移 - * @param upDown 镜头上移下移 0:停止 1:上移 2:下移 - */ - @Override - public void ptzdirectCmd(Device device, String channelId, int leftRight, int upDown) throws InvalidArgumentException, ParseException, SipException { - ptzCmd(device, channelId, leftRight, upDown, 0, sipConfig.getPtzSpeed(), 0); - } - - /** - * 云台方向放控制 - * - * @param device 控制设备 - * @param channelId 预览通道 - * @param leftRight 镜头左移右移 0:停止 1:左移 2:右移 - * @param upDown 镜头上移下移 0:停止 1:上移 2:下移 - * @param moveSpeed 镜头移动速度 - */ - @Override - public void ptzdirectCmd(Device device, String channelId, int leftRight, int upDown, int moveSpeed) throws InvalidArgumentException, ParseException, SipException { - ptzCmd(device, channelId, leftRight, upDown, 0, moveSpeed, 0); - } - - /** - * 云台缩放控制,使用配置文件中的默认镜头缩放速度 - * - * @param device 控制设备 - * @param channelId 预览通道 - * @param inOut 镜头放大缩小 0:停止 1:缩小 2:放大 - */ - @Override - public void ptzZoomCmd(Device device, String channelId, int inOut) throws InvalidArgumentException, ParseException, SipException { - ptzCmd(device, channelId, 0, 0, inOut, 0, sipConfig.getPtzSpeed()); - } - - /** - * 云台缩放控制 - * - * @param device 控制设备 - * @param channelId 预览通道 - * @param inOut 镜头放大缩小 0:停止 1:缩小 2:放大 - * @param zoomSpeed 镜头缩放速度 - */ - @Override - public void ptzZoomCmd(Device device, String channelId, int inOut, int zoomSpeed) throws InvalidArgumentException, ParseException, SipException { - ptzCmd(device, channelId, 0, 0, inOut, 0, zoomSpeed); - } - /** * 云台指令码计算 * diff --git a/src/main/java/com/genersoft/iot/vmp/media/bean/MediaInfo.java b/src/main/java/com/genersoft/iot/vmp/media/bean/MediaInfo.java index 624d6b6b..7dd49893 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/bean/MediaInfo.java +++ b/src/main/java/com/genersoft/iot/vmp/media/bean/MediaInfo.java @@ -80,7 +80,7 @@ public class MediaInfo { Boolean online = jsonObject.getBoolean("online"); Integer originType = jsonObject.getInteger("originType"); String originUrl = jsonObject.getString("originUrl"); - String originTypeStr = jsonObject.getString("originUrl"); + String originTypeStr = jsonObject.getString("originTypeStr"); Long aliveSecond = jsonObject.getLong("aliveSecond"); String params = jsonObject.getString("params"); Long bytesSpeed = jsonObject.getLong("bytesSpeed"); diff --git a/src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java index 11043c42..d9a3b965 100755 --- a/src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java @@ -807,6 +807,7 @@ public class MediaServerServiceImpl implements IMediaServerService { @Override public StreamInfo getStreamInfoByAppAndStream(MediaServer mediaServer, String app, String stream, MediaInfo mediaInfo, String addr, String callId, boolean isPlay) { + System.out.println(callId); StreamInfo streamInfoResult = new StreamInfo(); streamInfoResult.setStream(stream); streamInfoResult.setApp(app); @@ -822,7 +823,22 @@ public class MediaServerServiceImpl implements IMediaServerService { } streamInfoResult.setMediaServer(mediaServer); - String callIdParam = ObjectUtils.isEmpty(callId)?"":"?callId=" + callId; + StringBuilder callIdParamBuilder = new StringBuilder();; + if (!ObjectUtils.isEmpty(callId) || (mediaInfo != null && !ObjectUtils.isEmpty(mediaInfo.getOriginTypeStr()))) { + StringBuilder stringBuilder = new StringBuilder(); + if (!ObjectUtils.isEmpty(callId)) { + stringBuilder.append("callId=").append(callId); + } + if (mediaInfo != null && !ObjectUtils.isEmpty(mediaInfo.getOriginTypeStr())) { + if (!ObjectUtils.isEmpty(callId)) { + stringBuilder.append("&"); + } + stringBuilder.append("originTypeStr=").append(mediaInfo.getOriginTypeStr()); + } + callIdParamBuilder.append("?").append(stringBuilder); + } + String callIdParam = callIdParamBuilder.toString(); + streamInfoResult.setRtmp(addr, mediaServer.getRtmpPort(),mediaServer.getRtmpSSlPort(), app, stream, callIdParam); streamInfoResult.setRtsp(addr, mediaServer.getRtspPort(),mediaServer.getRtspSSLPort(), app, stream, callIdParam); diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java index e0df42dc..a2af2f68 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java @@ -197,6 +197,7 @@ public class ZLMMediaNodeServerService implements IMediaNodeServerService { } public StreamInfo getStreamInfoByAppAndStream(MediaServer mediaServer, String app, String stream, MediaInfo mediaInfo, String callId, boolean isPlay) { + System.out.println(callId); StreamInfo streamInfoResult = new StreamInfo(); streamInfoResult.setServerId(userSetting.getServerId()); streamInfoResult.setStream(stream); @@ -204,7 +205,23 @@ public class ZLMMediaNodeServerService implements IMediaNodeServerService { String addr = mediaServer.getStreamIp(); streamInfoResult.setIp(addr); streamInfoResult.setMediaServer(mediaServer); - String callIdParam = ObjectUtils.isEmpty(callId)?"":"?callId=" + callId; + + StringBuilder callIdParamBuilder = new StringBuilder();; + if (!ObjectUtils.isEmpty(callId) || (mediaInfo != null && !ObjectUtils.isEmpty(mediaInfo.getOriginTypeStr()))) { + StringBuilder stringBuilder = new StringBuilder(); + if (!ObjectUtils.isEmpty(callId)) { + stringBuilder.append("callId=").append(callId); + } + if (mediaInfo != null && !ObjectUtils.isEmpty(mediaInfo.getOriginTypeStr())) { + if (!ObjectUtils.isEmpty(callId)) { + stringBuilder.append("&"); + } + stringBuilder.append("originTypeStr=").append(mediaInfo.getOriginTypeStr()); + } + callIdParamBuilder.append("?").append(stringBuilder); + } + String callIdParam = callIdParamBuilder.toString(); + streamInfoResult.setRtmp(addr, mediaServer.getRtmpPort(),mediaServer.getRtmpSSlPort(), app, stream, callIdParam); streamInfoResult.setRtsp(addr, mediaServer.getRtspPort(),mediaServer.getRtspSSLPort(), app, stream, callIdParam); String flvFile = String.format("%s/%s.live.flv%s", app, stream, callIdParam); @@ -218,6 +235,7 @@ public class ZLMMediaNodeServerService implements IMediaNodeServerService { streamInfoResult.setMediaInfo(mediaInfo); if (mediaInfo != null) { streamInfoResult.setOriginType(mediaInfo.getOriginType()); + streamInfoResult.setOriginTypeStr(mediaInfo.getOriginTypeStr()); } return streamInfoResult; } diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/dto/hook/OnStreamChangedHookParam.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/dto/hook/OnStreamChangedHookParam.java index 8e793e3c..5ed378ee 100755 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/dto/hook/OnStreamChangedHookParam.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/dto/hook/OnStreamChangedHookParam.java @@ -1,6 +1,8 @@ package com.genersoft.iot.vmp.media.zlm.dto.hook; import com.genersoft.iot.vmp.vmanager.bean.StreamContent; +import lombok.Data; +import lombok.EqualsAndHashCode; import java.util.List; import java.util.Map; @@ -8,6 +10,8 @@ import java.util.Map; /** * @author lin */ +@EqualsAndHashCode(callSuper = true) +@Data public class OnStreamChangedHookParam extends HookParam{ /** @@ -109,19 +113,12 @@ public class OnStreamChangedHookParam extends HookParam{ */ private Map paramMap; - public boolean isRegist() { - return regist; - } - - public void setRegist(boolean regist) { - this.regist = regist; - } - /** * 是否是docker部署, docker部署不会自动更新zlm使用的端口,需要自己手动修改 */ private boolean docker; + @Data public static class MediaTrack { /** * 音频通道数 @@ -197,128 +194,9 @@ public class OnStreamChangedHookParam extends HookParam{ * 丢帧率 */ private float loss; - - public int getChannels() { - return channels; - } - - public void setChannels(int channels) { - this.channels = channels; - } - - public int getCodec_id() { - return codec_id; - } - - public void setCodec_id(int codec_id) { - this.codec_id = codec_id; - } - - public String getCodec_id_name() { - return codec_id_name; - } - - public void setCodec_id_name(String codec_id_name) { - this.codec_id_name = codec_id_name; - } - - public int getCodec_type() { - return codec_type; - } - - public void setCodec_type(int codec_type) { - this.codec_type = codec_type; - } - - public boolean isReady() { - return ready; - } - - public void setReady(boolean ready) { - this.ready = ready; - } - - public int getSample_bit() { - return sample_bit; - } - - public void setSample_bit(int sample_bit) { - this.sample_bit = sample_bit; - } - - public int getSample_rate() { - return sample_rate; - } - - public void setSample_rate(int sample_rate) { - this.sample_rate = sample_rate; - } - - public float getFps() { - return fps; - } - - public void setFps(float fps) { - this.fps = fps; - } - - public int getHeight() { - return height; - } - - public void setHeight(int height) { - this.height = height; - } - - public int getWidth() { - return width; - } - - public void setWidth(int width) { - this.width = width; - } - - public int getFrames() { - return frames; - } - - public void setFrames(int frames) { - this.frames = frames; - } - - public int getKey_frames() { - return key_frames; - } - - public void setKey_frames(int key_frames) { - this.key_frames = key_frames; - } - - public int getGop_size() { - return gop_size; - } - - public void setGop_size(int gop_size) { - this.gop_size = gop_size; - } - - public int getGop_interval_ms() { - return gop_interval_ms; - } - - public void setGop_interval_ms(int gop_interval_ms) { - this.gop_interval_ms = gop_interval_ms; - } - - public float getLoss() { - return loss; - } - - public void setLoss(float loss) { - this.loss = loss; - } } + @Data public static class OriginSock{ private String identifier; private String local_ip; @@ -326,204 +204,10 @@ public class OnStreamChangedHookParam extends HookParam{ private String peer_ip; private int peer_port; - public String getIdentifier() { - return identifier; - } - - public void setIdentifier(String identifier) { - this.identifier = identifier; - } - - public String getLocal_ip() { - return local_ip; - } - - public void setLocal_ip(String local_ip) { - this.local_ip = local_ip; - } - - public int getLocal_port() { - return local_port; - } - - public void setLocal_port(int local_port) { - this.local_port = local_port; - } - - public String getPeer_ip() { - return peer_ip; - } - - public void setPeer_ip(String peer_ip) { - this.peer_ip = peer_ip; - } - - public int getPeer_port() { - return peer_port; - } - - public void setPeer_port(int peer_port) { - this.peer_port = peer_port; - } } private StreamContent streamInfo; - public String getApp() { - return app; - } - - public void setApp(String app) { - this.app = app; - } - - public String getStream() { - return stream; - } - - public void setStream(String stream) { - this.stream = stream; - } - - public int getTotalReaderCount() { - return totalReaderCount; - } - - public void setTotalReaderCount(int totalReaderCount) { - this.totalReaderCount = totalReaderCount; - } - - - public int getOriginType() { - return originType; - } - - public void setOriginType(int originType) { - this.originType = originType; - } - - - public String getOriginTypeStr() { - return originTypeStr; - } - - public void setOriginTypeStr(String originTypeStr) { - this.originTypeStr = originTypeStr; - } - - public String getOriginUrl() { - return originUrl; - } - - public void setOriginUrl(String originUrl) { - this.originUrl = originUrl; - } - - public Long getCreateStamp() { - return createStamp; - } - - public void setCreateStamp(Long createStamp) { - this.createStamp = createStamp; - } - - public Long getAliveSecond() { - return aliveSecond; - } - - public void setAliveSecond(Long aliveSecond) { - this.aliveSecond = aliveSecond; - } - - public List getTracks() { - return tracks; - } - - public void setTracks(List tracks) { - this.tracks = tracks; - } - - public String getSchema() { - return schema; - } - - public void setSchema(String schema) { - this.schema = schema; - } - - public void setOriginSock(OriginSock originSock) { - this.originSock = originSock; - } - - public Long getBytesSpeed() { - return bytesSpeed; - } - - public void setBytesSpeed(Long bytesSpeed) { - this.bytesSpeed = bytesSpeed; - } - - public String getVhost() { - return vhost; - } - - public void setVhost(String vhost) { - this.vhost = vhost; - } - - public OriginSock getOriginSock() { - return originSock; - } - - public boolean isDocker() { - return docker; - } - - public void setDocker(boolean docker) { - this.docker = docker; - } - - public StreamContent getStreamInfo() { - return streamInfo; - } - - public void setStreamInfo(StreamContent streamInfo) { - this.streamInfo = streamInfo; - } - - public String getSeverId() { - return severId; - } - - public void setSeverId(String severId) { - this.severId = severId; - } - - public String getCallId() { - return callId; - } - - public void setCallId(String callId) { - this.callId = callId; - } - - - public Map getParamMap() { - return paramMap; - } - - public void setParamMap(Map paramMap) { - this.paramMap = paramMap; - } - - public String getParams() { - return params; - } - - public void setParams(String params) { - this.params = params; - } - @Override public String toString() { return "OnStreamChangedHookParam{" +