播放地址携带流来源信息

master
lin 2025-03-12 16:09:54 +08:00
parent e0f9c93b0f
commit e5c3f82d54
7 changed files with 48 additions and 713 deletions

View File

@ -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;
}
}

View File

@ -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;

View File

@ -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);
}
/**
*
*

View File

@ -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");

View File

@ -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);

View File

@ -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;
}

View File

@ -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<String, String> paramMap;
public boolean isRegist() {
return regist;
}
public void setRegist(boolean regist) {
this.regist = regist;
}
/**
* docker dockerzlm使
*/
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<MediaTrack> getTracks() {
return tracks;
}
public void setTracks(List<MediaTrack> 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<String, String> getParamMap() {
return paramMap;
}
public void setParamMap(Map<String, String> paramMap) {
this.paramMap = paramMap;
}
public String getParams() {
return params;
}
public void setParams(String params) {
this.params = params;
}
@Override
public String toString() {
return "OnStreamChangedHookParam{" +