临时提交

This commit is contained in:
648540858
2024-06-20 22:29:50 +08:00
parent 246c01b1c8
commit 306c42b4b7
30 changed files with 583 additions and 1331 deletions

View File

@@ -0,0 +1,64 @@
package com.genersoft.iot.vmp.media.zlm.dto;
import com.genersoft.iot.vmp.gb28181.bean.CommonGBChannel;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @author lin
*/
@Data
@Schema(description = "拉流代理的信息")
@EqualsAndHashCode(callSuper = true)
public class StreamProxy extends CommonGBChannel {
/**
* 数据库自增ID
*/
@Schema(description = "数据库自增ID")
private int id;
@Schema(description = "类型取值default 流媒体直接拉流默认ffmpeg ffmpeg实现拉流")
private String type;
@Schema(description = "应用名")
private String app;
@Schema(description = "流ID")
private String stream;
@Schema(description = "流媒体服务ID")
private String mediaServerId;
@Schema(description = "拉流地址")
private String srcUrl;
@Schema(description = "超时时间")
private int timeout;
@Schema(description = "ffmpeg模板KEY")
private String ffmpegCmdKey;
@Schema(description = "rtsp拉流时拉流方式0tcp1udp2组播")
private String rtspType;
@Schema(description = "是否启用")
private boolean enable;
@Schema(description = "是否启用音频")
private boolean enableAudio;
@Schema(description = "是否启用MP4")
private boolean enableMp4;
@Schema(description = "是否 无人观看时删除")
private boolean enableRemoveNoneReader;
@Schema(description = "是否 无人观看时自动停用")
private boolean enableDisableNoneReader;
@Schema(description = "拉流代理时zlm返回的key用于停止拉流代理")
private String streamKey;
}

View File

@@ -1,180 +0,0 @@
package com.genersoft.iot.vmp.media.zlm.dto;
import com.genersoft.iot.vmp.gb28181.bean.GbStream;
import io.swagger.v3.oas.annotations.media.Schema;
/**
* @author lin
*/
@Schema(description = "拉流代理的信息")
public class StreamProxyItem extends GbStream {
@Schema(description = "类型")
private String type;
@Schema(description = "应用名")
private String app;
@Schema(description = "流ID")
private String stream;
@Schema(description = "流媒体服务ID")
private String mediaServerId;
@Schema(description = "拉流地址")
private String url;
@Schema(description = "拉流地址")
private String srcUrl;
@Schema(description = "目标地址")
private String dstUrl;
@Schema(description = "超时时间")
private int timeoutMs;
@Schema(description = "ffmpeg模板KEY")
private String ffmpegCmdKey;
@Schema(description = "rtsp拉流时拉流方式0tcp1udp2组播")
private String rtpType;
@Schema(description = "是否启用")
private boolean enable;
@Schema(description = "是否启用音频")
private boolean enableAudio;
@Schema(description = "是否启用MP4")
private boolean enableMp4;
@Schema(description = "是否 无人观看时删除")
private boolean enableRemoveNoneReader;
@Schema(description = "是否 无人观看时自动停用")
private boolean enableDisableNoneReader;
@Schema(description = "拉流代理时zlm返回的key用于停止拉流代理")
private String streamKey;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
@Override
public String getApp() {
return app;
}
@Override
public void setApp(String app) {
this.app = app;
}
@Override
public String getStream() {
return stream;
}
@Override
public void setStream(String stream) {
this.stream = stream;
}
@Override
public String getMediaServerId() {
return mediaServerId;
}
@Override
public void setMediaServerId(String mediaServerId) {
this.mediaServerId = mediaServerId;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getSrcUrl() {
return srcUrl;
}
public void setSrcUrl(String src_url) {
this.srcUrl = src_url;
}
public String getDstUrl() {
return dstUrl;
}
public void setDstUrl(String dst_url) {
this.dstUrl = dst_url;
}
public int getTimeoutMs() {
return timeoutMs;
}
public void setTimeoutMs(int timeout_ms) {
this.timeoutMs = timeout_ms;
}
public String getFfmpegCmdKey() {
return ffmpegCmdKey;
}
public void setFfmpegCmdKey(String ffmpeg_cmd_key) {
this.ffmpegCmdKey = ffmpeg_cmd_key;
}
public String getRtpType() {
return rtpType;
}
public void setRtpType(String rtp_type) {
this.rtpType = rtp_type;
}
public boolean isEnable() {
return enable;
}
public void setEnable(boolean enable) {
this.enable = enable;
}
public boolean isEnableMp4() {
return enableMp4;
}
public void setEnableMp4(boolean enable_mp4) {
this.enableMp4 = enable_mp4;
}
public boolean isEnableRemoveNoneReader() {
return enableRemoveNoneReader;
}
public void setEnableRemoveNoneReader(boolean enable_remove_none_reader) {
this.enableRemoveNoneReader = enable_remove_none_reader;
}
public boolean isEnableDisableNoneReader() {
return enableDisableNoneReader;
}
public void setEnableDisableNoneReader(boolean enable_disable_none_reader) {
this.enableDisableNoneReader = enable_disable_none_reader;
}
public boolean isEnableAudio() {
return enableAudio;
}
public void setEnableAudio(boolean enable_audio) {
this.enableAudio = enable_audio;
}
public String getStreamKey() {
return streamKey;
}
public void setStreamKey(String streamKey) {
this.streamKey = streamKey;
}
}

View File

@@ -0,0 +1,107 @@
package com.genersoft.iot.vmp.media.zlm.dto;
import com.genersoft.iot.vmp.common.StreamInfo;
import com.genersoft.iot.vmp.gb28181.bean.CommonGBChannel;
import com.genersoft.iot.vmp.media.event.media.MediaArrivalEvent;
import com.genersoft.iot.vmp.utils.DateUtil;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.jetbrains.annotations.NotNull;
@Data
@Schema(description = "推流信息")
@EqualsAndHashCode(callSuper = true)
public class StreamPush extends CommonGBChannel implements Comparable<StreamPush>{
/**
* id
*/
@Schema(description = "id")
private Integer id;
/**
* 应用名
*/
@Schema(description = "应用名")
private String app;
/**
* 流id
*/
@Schema(description = "流id")
private String stream;
/**
* 使用的流媒体ID
*/
@Schema(description = "使用的流媒体ID")
private String mediaServerId;
/**
* 使用的服务ID
*/
@Schema(description = "使用的服务ID")
private String serverId;
/**
* 推流时间
*/
@Schema(description = "推流时间")
private String pushTime;
/**
* 更新时间
*/
@Schema(description = "更新时间")
private String updateTime;
/**
* 创建时间
*/
@Schema(description = "创建时间")
private String createTime;
/**
* 是否正在推流
*/
@Schema(description = "是否正在推流")
private boolean pushIng;
/**
* 是否自己平台的推流
*/
@Schema(description = "是否自己平台的推流")
private boolean self;
@Override
public int compareTo(@NotNull StreamPush streamPushItem) {
return Long.valueOf(DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(this.createTime)
- DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(streamPushItem.getCreateTime())).intValue();
}
public StreamPush getInstance(StreamInfo streamInfo) {
StreamPush streamPushItem = new StreamPush();
streamPushItem.setApp(streamInfo.getApp());
streamPushItem.setMediaServerId(streamInfo.getMediaServerId());
streamPushItem.setStream(streamInfo.getStream());
streamPushItem.setCreateTime(DateUtil.getNow());
streamPushItem.setServerId(streamInfo.getMediaServerId());
return streamPushItem;
}
public static StreamPush getInstance(MediaArrivalEvent event, String serverId){
StreamPush streamPushItem = new StreamPush();
streamPushItem.setApp(event.getApp());
streamPushItem.setMediaServerId(event.getMediaServer().getId());
streamPushItem.setStream(event.getStream());
streamPushItem.setCreateTime(DateUtil.getNow());
streamPushItem.setServerId(serverId);
return streamPushItem;
}
}

View File

@@ -1,432 +0,0 @@
package com.genersoft.iot.vmp.media.zlm.dto;
import com.genersoft.iot.vmp.common.StreamInfo;
import com.genersoft.iot.vmp.gb28181.bean.GbStream;
import com.genersoft.iot.vmp.media.event.media.MediaArrivalEvent;
import com.genersoft.iot.vmp.media.zlm.dto.hook.OnStreamChangedHookParam;
import com.genersoft.iot.vmp.utils.DateUtil;
import io.swagger.v3.oas.annotations.media.Schema;
import org.jetbrains.annotations.NotNull;
import java.util.List;
@Schema(description = "推流信息")
public class StreamPushItem extends GbStream implements Comparable<StreamPushItem>{
/**
* id
*/
@Schema(description = "id")
private Integer id;
/**
* 应用名
*/
@Schema(description = "应用名")
private String app;
/**
* 流id
*/
@Schema(description = "流id")
private String stream;
/**
* 观看总人数包括hls/rtsp/rtmp/http-flv/ws-flv
*/
@Schema(description = "观看总人数")
private Integer totalReaderCount;
/**
* 协议 包括hls/rtsp/rtmp/http-flv/ws-flv
*/
@Schema(description = "协议 包括hls/rtsp/rtmp/http-flv/ws-flv")
private List<MediaSchema> schemas;
/**
* 产生源类型,
* unknown = 0,
* rtmp_push=1,
* rtsp_push=2,
* rtp_push=3,
* pull=4,
* ffmpeg_pull=5,
* mp4_vod=6,
* device_chn=7
*/
@Schema(description = "产生源类型")
private int originType;
/**
* 客户端和服务器网络信息可能为null类型
*/
@Schema(description = "客户端和服务器网络信息可能为null类型")
private OnStreamChangedHookParam.OriginSock originSock;
/**
* 产生源类型的字符串描述
*/
@Schema(description = "产生源类型的字符串描述")
private String originTypeStr;
/**
* 产生源的url
*/
@Schema(description = "产生源的url")
private String originUrl;
/**
* 存活时间,单位秒
*/
@Schema(description = "存活时间,单位秒")
private Long aliveSecond;
/**
* 音视频轨道
*/
@Schema(description = "音视频轨道")
private List<OnStreamChangedHookParam.MediaTrack> tracks;
/**
* 音视频轨道
*/
@Schema(description = "音视频轨道")
private String vhost;
/**
* 使用的流媒体ID
*/
@Schema(description = "使用的流媒体ID")
private String mediaServerId;
/**
* 使用的服务ID
*/
@Schema(description = "使用的服务ID")
private String serverId;
/**
* 推流时间
*/
@Schema(description = "推流时间")
private String pushTime;
/**
* 更新时间
*/
@Schema(description = "更新时间")
private String updateTime;
/**
* 创建时间
*/
@Schema(description = "创建时间")
private String createTime;
/**
* 是否正在推流
*/
@Schema(description = "是否正在推流")
private boolean pushIng;
/**
* 是否自己平台的推流
*/
@Schema(description = "是否自己平台的推流")
private boolean self;
public String getVhost() {
return vhost;
}
public void setVhost(String vhost) {
this.vhost = vhost;
}
@Override
public int compareTo(@NotNull StreamPushItem streamPushItem) {
return Long.valueOf(DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(super.createTime)
- DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(streamPushItem.getCreateTime())).intValue();
}
public StreamPushItem getInstance(StreamInfo streamInfo) {
StreamPushItem streamPushItem = new StreamPushItem();
streamPushItem.setApp(streamInfo.getApp());
streamPushItem.setMediaServerId(streamInfo.getMediaServerId());
streamPushItem.setStream(streamInfo.getStream());
streamPushItem.setAliveSecond(streamInfo.getMediaInfo().getAliveSecond());
// streamPushItem.setOriginSock(streamInfo.getMediaInfo().getOriginSock());
streamPushItem.setTotalReaderCount(streamInfo.getMediaInfo().getReaderCount());
streamPushItem.setOriginType(streamInfo.getOriginType());
// streamPushItem.setOriginTypeStr(streamInfo.getMediaInfo().getOriginTypeStr());
// streamPushItem.setOriginUrl(streamInfo.getMediaInfo().getOriginUrl());
streamPushItem.setCreateTime(DateUtil.getNow());
streamPushItem.setAliveSecond(streamInfo.getMediaInfo().getAliveSecond());
streamPushItem.setStatus(true);
streamPushItem.setStreamType("push");
// streamPushItem.setVhost(streamInfo.getVhost());
streamPushItem.setServerId(streamInfo.getMediaServerId());
return streamPushItem;
}
public static StreamPushItem getInstance(MediaArrivalEvent event, String serverId){
StreamPushItem streamPushItem = new StreamPushItem();
streamPushItem.setApp(event.getApp());
streamPushItem.setMediaServerId(event.getMediaServer().getId());
streamPushItem.setStream(event.getStream());
streamPushItem.setAliveSecond(event.getMediaInfo().getAliveSecond());
// streamPushItem.setOriginSock(streamInfo.getMediaInfo().getOriginSock());
streamPushItem.setTotalReaderCount(event.getMediaInfo().getReaderCount());
streamPushItem.setOriginType(event.getMediaInfo().getOriginType());
// streamPushItem.setOriginTypeStr(streamInfo.getMediaInfo().getOriginTypeStr());
// streamPushItem.setOriginUrl(streamInfo.getMediaInfo().getOriginUrl());
streamPushItem.setCreateTime(DateUtil.getNow());
streamPushItem.setAliveSecond(event.getMediaInfo().getAliveSecond());
streamPushItem.setStatus(true);
streamPushItem.setStreamType("push");
// streamPushItem.setVhost(streamInfo.getVhost());
streamPushItem.setServerId(serverId);
return streamPushItem;
}
public static class MediaSchema {
private String schema;
private Long bytesSpeed;
public String getSchema() {
return schema;
}
public void setSchema(String schema) {
this.schema = schema;
}
public Long getBytesSpeed() {
return bytesSpeed;
}
public void setBytesSpeed(Long bytesSpeed) {
this.bytesSpeed = bytesSpeed;
}
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Override
public String getApp() {
return app;
}
@Override
public void setApp(String app) {
this.app = app;
}
@Override
public String getStream() {
return stream;
}
@Override
public void setStream(String stream) {
this.stream = stream;
}
public Integer getTotalReaderCount() {
return totalReaderCount;
}
public void setTotalReaderCount(Integer totalReaderCount) {
this.totalReaderCount = totalReaderCount;
}
public List<MediaSchema> getSchemas() {
return schemas;
}
public void setSchemas(List<MediaSchema> schemas) {
this.schemas = schemas;
}
public int getOriginType() {
return originType;
}
public void setOriginType(int originType) {
this.originType = originType;
}
public OnStreamChangedHookParam.OriginSock getOriginSock() {
return originSock;
}
public void setOriginSock(OnStreamChangedHookParam.OriginSock originSock) {
this.originSock = originSock;
}
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 getAliveSecond() {
return aliveSecond;
}
public void setAliveSecond(Long aliveSecond) {
this.aliveSecond = aliveSecond;
}
public List<OnStreamChangedHookParam.MediaTrack> getTracks() {
return tracks;
}
public void setTracks(List<OnStreamChangedHookParam.MediaTrack> tracks) {
this.tracks = tracks;
}
@Override
public String getMediaServerId() {
return mediaServerId;
}
@Override
public void setMediaServerId(String mediaServerId) {
this.mediaServerId = mediaServerId;
}
public String getServerId() {
return serverId;
}
public void setServerId(String serverId) {
this.serverId = serverId;
}
public String getPushTime() {
return pushTime;
}
public void setPushTime(String pushTime) {
this.pushTime = pushTime;
}
public String getUpdateTime() {
return updateTime;
}
public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}
@Override
public String getCreateTime() {
return createTime;
}
@Override
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public boolean isPushIng() {
return pushIng;
}
public void setPushIng(boolean pushIng) {
this.pushIng = pushIng;
}
public boolean isSelf() {
return self;
}
public void setSelf(boolean self) {
this.self = self;
}
// @Override
// public Integer getGbStreamId() {
// return super.getGbStreamId();
// }
//
// @Override
// public void setGbStreamId(Integer gbStreamId) {
// super.setGbStreamId(gbStreamId);
// }
//
//
// public String getGbId() {
// return super.getGbId();
// }
//
// public void setGbId(String gbId) {
// super.setGbId(gbId);
// }
//
// public String getName() {
// return super.getName();
// }
//
// public void setName(String name) {
// super.setName(name);
// }
//
// public double getLongitude() {
// return super.getLongitude();
// }
//
// public void setLongitude(double longitude) {
// super.setLongitude(longitude);
// }
//
// public double getLatitude() {
// return super.getLatitude();
// }
//
// public void setLatitude(double latitude) {
// super.setLatitude(latitude);
// }
//
// public String getStreamType() {
// return super.getStreamType();
// }
//
// public void setStreamType(String streamType) {
// super.setStreamType(streamType);
// }
//
// public boolean isStatus() {
// return super.isStatus();
// }
//
// public void setStatus(boolean status) {
// super.setStatus(status);
// }
}