mirror of
https://gitee.com/pan648540858/wvp-GB28181-pro.git
synced 2026-05-06 14:07:49 +08:00
Compare commits
3 Commits
a36ed7564f
...
e5bd536bf0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e5bd536bf0 | ||
|
|
c7904ff897 | ||
|
|
bed4e79061 |
@ -1,4 +1,4 @@
|
||||
FROM ringcentral/jdk:11 AS builder
|
||||
FROM ringcentral/jdk:21 AS builder
|
||||
|
||||
EXPOSE 18978/tcp
|
||||
EXPOSE 8116/tcp
|
||||
@ -56,11 +56,11 @@ COPY . /build
|
||||
WORKDIR /build
|
||||
RUN ls && mvn clean package -Dmaven.test.skip=true
|
||||
WORKDIR /build/target
|
||||
#确保文件名一致
|
||||
#确保文件名一致
|
||||
RUN mv wvp-pro-*.jar wvp.jar
|
||||
|
||||
|
||||
FROM ringcentral/jdk:11
|
||||
FROM ringcentral/jdk:21
|
||||
RUN mkdir -p /opt/wvp
|
||||
WORKDIR /opt/wvp
|
||||
COPY --from=builder /build/target /opt/wvp
|
||||
|
||||
53
src/main/java/com/genersoft/iot/vmp/gb28181/bean/TalkRtpInfo.java
Executable file
53
src/main/java/com/genersoft/iot/vmp/gb28181/bean/TalkRtpInfo.java
Executable file
@ -0,0 +1,53 @@
|
||||
package com.genersoft.iot.vmp.gb28181.bean;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class TalkRtpInfo {
|
||||
|
||||
/**
|
||||
* 应用名, 待推送给设备的流应用名
|
||||
*/
|
||||
private String app;
|
||||
|
||||
/**
|
||||
* 流id, 待推送给设备的流id
|
||||
*/
|
||||
private String stream;
|
||||
|
||||
/**
|
||||
* rtp推流出去的ssrc
|
||||
*/
|
||||
private String ssrc;
|
||||
|
||||
/**
|
||||
* 对方rtp推流上来的流id
|
||||
*/
|
||||
private String receiveStreamId;
|
||||
|
||||
/**
|
||||
* 是否推送本地MP4录像,该参数非必选参数
|
||||
*/
|
||||
private Integer fromMp4;
|
||||
|
||||
/**
|
||||
* 类型: 0(ES流)、1(PS流)、2(TS流),默认1(PS流);该参数非必选参数
|
||||
*/
|
||||
private Integer type;
|
||||
|
||||
/**
|
||||
* rtp payload type,默认96;该参数非必选参数
|
||||
*/
|
||||
private Integer pt;
|
||||
|
||||
/**
|
||||
* rtp es方式打包时,是否只打包音频;该参数非必选参数
|
||||
*/
|
||||
private Integer onlyAudio;
|
||||
|
||||
/**
|
||||
* 转发rtp(tcp模式)时,如果发送不出去,是否限制源端收流速度,此参数在多倍速rtp转发时作用较大
|
||||
*/
|
||||
private Integer enableOriginReceiveLimit;
|
||||
|
||||
}
|
||||
@ -10,6 +10,7 @@ import com.genersoft.iot.vmp.conf.SipConfig;
|
||||
import com.genersoft.iot.vmp.conf.UserSetting;
|
||||
import com.genersoft.iot.vmp.conf.exception.ControllerException;
|
||||
import com.genersoft.iot.vmp.gb28181.bean.SendRtpInfo;
|
||||
import com.genersoft.iot.vmp.gb28181.bean.TalkRtpInfo;
|
||||
import com.genersoft.iot.vmp.gb28181.service.IInviteStreamService;
|
||||
import com.genersoft.iot.vmp.media.abl.bean.ABLMedia;
|
||||
import com.genersoft.iot.vmp.media.abl.bean.ABLResult;
|
||||
@ -387,7 +388,7 @@ public class ABLMediaNodeServerService implements IMediaNodeServerService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer startSendRtpTalk(MediaServer mediaServer, SendRtpInfo sendRtpItem, Integer timeout) {
|
||||
public Integer startSendRtpTalk(MediaServer mediaServer, TalkRtpInfo talkRtpInfo, Integer timeout) {
|
||||
logger.warn("[abl-startSendRtpTalk] 未实现");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@ package com.genersoft.iot.vmp.media.service;
|
||||
import com.genersoft.iot.vmp.common.CommonCallback;
|
||||
import com.genersoft.iot.vmp.common.StreamInfo;
|
||||
import com.genersoft.iot.vmp.gb28181.bean.SendRtpInfo;
|
||||
import com.genersoft.iot.vmp.gb28181.bean.TalkRtpInfo;
|
||||
import com.genersoft.iot.vmp.media.bean.MediaInfo;
|
||||
import com.genersoft.iot.vmp.media.bean.MediaServer;
|
||||
import com.genersoft.iot.vmp.media.bean.RecordInfo;
|
||||
@ -67,7 +68,7 @@ public interface IMediaNodeServerService {
|
||||
|
||||
void startSendRtpStream(MediaServer mediaServer, SendRtpInfo sendRtpItem);
|
||||
|
||||
Integer startSendRtpTalk(MediaServer mediaServer, SendRtpInfo sendRtpItem, Integer timeout);
|
||||
Integer startSendRtpTalk(MediaServer mediaServer, TalkRtpInfo talkRtpInfo, Integer timeout);
|
||||
|
||||
Long updateDownloadProcess(MediaServer mediaServer, String app, String stream);
|
||||
|
||||
|
||||
@ -3,6 +3,7 @@ package com.genersoft.iot.vmp.media.service;
|
||||
import com.genersoft.iot.vmp.common.CommonCallback;
|
||||
import com.genersoft.iot.vmp.common.StreamInfo;
|
||||
import com.genersoft.iot.vmp.gb28181.bean.SendRtpInfo;
|
||||
import com.genersoft.iot.vmp.gb28181.bean.TalkRtpInfo;
|
||||
import com.genersoft.iot.vmp.media.bean.MediaInfo;
|
||||
import com.genersoft.iot.vmp.media.bean.MediaServer;
|
||||
import com.genersoft.iot.vmp.media.bean.RecordInfo;
|
||||
@ -139,7 +140,7 @@ public interface IMediaServerService {
|
||||
|
||||
Integer startSendRtpPassive(MediaServer mediaServer, SendRtpInfo sendRtpItem, Integer timeout);
|
||||
|
||||
Integer startSendRtpTalk(MediaServer mediaServer, SendRtpInfo sendRtpItem, Integer timeout);
|
||||
Integer startSendRtpTalk(MediaServer mediaServer, TalkRtpInfo talkRtpInfo, Integer timeout);
|
||||
|
||||
void startSendRtp(MediaServer mediaServer, SendRtpInfo sendRtpItem);
|
||||
|
||||
|
||||
@ -7,6 +7,7 @@ import com.genersoft.iot.vmp.conf.MediaConfig;
|
||||
import com.genersoft.iot.vmp.conf.UserSetting;
|
||||
import com.genersoft.iot.vmp.conf.exception.ControllerException;
|
||||
import com.genersoft.iot.vmp.gb28181.bean.SendRtpInfo;
|
||||
import com.genersoft.iot.vmp.gb28181.bean.TalkRtpInfo;
|
||||
import com.genersoft.iot.vmp.gb28181.service.IInviteStreamService;
|
||||
import com.genersoft.iot.vmp.gb28181.session.SSRCFactory;
|
||||
import com.genersoft.iot.vmp.media.bean.MediaInfo;
|
||||
@ -24,7 +25,6 @@ import com.genersoft.iot.vmp.media.zlm.dto.hook.OriginType;
|
||||
import com.genersoft.iot.vmp.service.bean.DownloadFileInfo;
|
||||
import com.genersoft.iot.vmp.service.bean.ErrorCallback;
|
||||
import com.genersoft.iot.vmp.service.bean.MediaServerLoad;
|
||||
import com.genersoft.iot.vmp.service.bean.SSRCInfo;
|
||||
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
||||
import com.genersoft.iot.vmp.storager.dao.MediaServerMapper;
|
||||
import com.genersoft.iot.vmp.streamProxy.bean.StreamProxy;
|
||||
@ -32,7 +32,6 @@ import com.genersoft.iot.vmp.utils.DateUtil;
|
||||
import com.genersoft.iot.vmp.utils.redis.RedisUtil;
|
||||
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
|
||||
import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
@ -803,15 +802,16 @@ public class MediaServerServiceImpl implements IMediaServerService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer startSendRtpTalk(MediaServer mediaServer, SendRtpInfo sendRtpItem, Integer timeout) {
|
||||
public Integer startSendRtpTalk(MediaServer mediaServer, TalkRtpInfo talkRtpInfo, Integer timeout) {
|
||||
IMediaNodeServerService mediaNodeServerService = nodeServerServiceMap.get(mediaServer.getType());
|
||||
if (mediaNodeServerService == null) {
|
||||
log.info("[startSendRtpPassive] 失败, mediaServer的类型: {},未找到对应的实现类", mediaServer.getType());
|
||||
throw new ControllerException(ErrorCode.ERROR100.getCode(), "未找到mediaServer对应的实现类");
|
||||
}
|
||||
return mediaNodeServerService.startSendRtpTalk(mediaServer, sendRtpItem, timeout);
|
||||
return mediaNodeServerService.startSendRtpTalk(mediaServer, talkRtpInfo, timeout);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void startSendRtp(MediaServer mediaServer, SendRtpInfo sendRtpItem) {
|
||||
IMediaNodeServerService mediaNodeServerService = nodeServerServiceMap.get(mediaServer.getType());
|
||||
|
||||
@ -9,6 +9,7 @@ import com.genersoft.iot.vmp.common.enums.MediaApp;
|
||||
import com.genersoft.iot.vmp.conf.UserSetting;
|
||||
import com.genersoft.iot.vmp.conf.exception.ControllerException;
|
||||
import com.genersoft.iot.vmp.gb28181.bean.SendRtpInfo;
|
||||
import com.genersoft.iot.vmp.gb28181.bean.TalkRtpInfo;
|
||||
import com.genersoft.iot.vmp.media.bean.MediaInfo;
|
||||
import com.genersoft.iot.vmp.media.bean.MediaServer;
|
||||
import com.genersoft.iot.vmp.media.bean.RecordInfo;
|
||||
@ -371,17 +372,17 @@ public class ZLMMediaNodeServerService implements IMediaNodeServerService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer startSendRtpTalk(MediaServer mediaServer, SendRtpInfo sendRtpItem, Integer timeout) {
|
||||
public Integer startSendRtpTalk(MediaServer mediaServer, TalkRtpInfo talkRtpInfo, Integer timeout) {
|
||||
Map<String, Object> param = new HashMap<>(12);
|
||||
param.put("vhost","__defaultVhost__");
|
||||
param.put("app", sendRtpItem.getApp());
|
||||
param.put("stream", sendRtpItem.getStream());
|
||||
param.put("ssrc", sendRtpItem.getSsrc());
|
||||
param.put("pt", sendRtpItem.getPt());
|
||||
param.put("type", sendRtpItem.isUsePs() ? "1" : "0");
|
||||
param.put("only_audio", sendRtpItem.isOnlyAudio() ? "1" : "0");
|
||||
param.put("recv_stream_id", sendRtpItem.getReceiveStream());
|
||||
param.put("enable_origin_recv_limit", "1");
|
||||
param.put("app", talkRtpInfo.getApp());
|
||||
param.put("stream", talkRtpInfo.getStream());
|
||||
param.put("ssrc", talkRtpInfo.getSsrc());
|
||||
param.put("pt", talkRtpInfo.getPt());
|
||||
param.put("type", talkRtpInfo.getType());
|
||||
param.put("only_audio", talkRtpInfo.getOnlyAudio());
|
||||
param.put("recv_stream_id", talkRtpInfo.getReceiveStreamId());
|
||||
param.put("enable_origin_recv_limit", talkRtpInfo.getEnableOriginReceiveLimit() != null && talkRtpInfo.getEnableOriginReceiveLimit() == 1 ? "1" : "0");
|
||||
ZLMResult<?> zlmResult = zlmServerFactory.startSendRtpTalk(mediaServer, param, null);
|
||||
if (zlmResult.getCode() != 0 ) {
|
||||
log.error("启动监听TCP被动推流失败: {}, 参数:{}", zlmResult.getMsg(), JSON.toJSONString(param));
|
||||
|
||||
Loading…
Reference in New Issue
Block a user