소스 검색

合并主线

648540858 2 년 전
부모
커밋
dfb87c7685

+ 8 - 0
README.md

@@ -169,3 +169,11 @@ QQ私信一般不回, 精力有限.欢迎大家在群里讨论.觉得项目对
 
 ps: 刚增加了这个名单,肯定遗漏了一些大佬,欢迎大佬联系我添加。
 
+ffmpeg -re -i 123.mp3 -acodec pcm_alaw -ar 8000 -ac 1  -f rtsp rtsp://192.168.1.3:30554/broadcast/34020000001320000101_34020000001310000001
+
+ffmpeg -re -i 123.mp3 -acodec pcm_alaw -ar 8000 -ac 1  -f rtsp rtsp://192.168.1.3:30554/talk/34020000001320000011_34020000001370000001
+
+
+
+ffmpeg -re -i 123.mp3 -acodec pcm_alaw -ar 8000 -ac 1  -f rtsp rtsp://192.168.1.3:30554/talk/34020000001320000101_34020000001310000001
+

+ 1 - 1
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java

@@ -629,7 +629,7 @@ public class SIPCommander implements ISIPCommander {
         content.append("f=v/////a/1/8/1" + "\r\n");
 
         Request request = headerProvider.createInviteRequest(device, channelId, content.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, ssrcInfo.getSsrc(), callIdHeader);
-        sipSender.transmitRequest(device.getTransport(), request, (e -> {
+        sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, (e -> {
             streamSession.remove(device.getDeviceId(), channelId, ssrcInfo.getStream());
             mediaServerService.releaseSsrc(mediaServerItem.getId(), ssrcInfo.getSsrc());
             errorEvent.response(e);

+ 5 - 1
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/AckRequestProcessor.java

@@ -16,6 +16,8 @@ import com.genersoft.iot.vmp.gb28181.transmit.event.request.ISIPRequestProcessor
 import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
 import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory;
 import com.genersoft.iot.vmp.media.zlm.ZlmHttpHookSubscribe;
+import com.genersoft.iot.vmp.media.zlm.dto.HookSubscribeFactory;
+import com.genersoft.iot.vmp.media.zlm.dto.HookSubscribeForRtpServerTimeout;
 import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
 import com.genersoft.iot.vmp.service.IDeviceService;
 import com.genersoft.iot.vmp.service.IMediaServerService;
@@ -131,7 +133,7 @@ public class AckRequestProcessor extends SIPRequestProcessorParent implements In
 		param.put("use_ps", sendRtpItem.isUsePs() ? "1" : "0");
 		param.put("only_audio", sendRtpItem.isOnlyAudio() ? "1" : "0");
 		if (!sendRtpItem.isTcp()) {
-			// 开启rtcp保活
+			// udp模式下开启rtcp保活
 			param.put("udp_rtcp_timeout", sendRtpItem.isRtcp()? "1":"0");
 		}
 
@@ -147,6 +149,8 @@ public class AckRequestProcessor extends SIPRequestProcessorParent implements In
 			// 如果是非严格模式,需要关闭端口占用
 			JSONObject startSendRtpStreamResult = null;
 			if (sendRtpItem.getLocalPort() != 0) {
+				HookSubscribeForRtpServerTimeout hookSubscribeForRtpServerTimeout = HookSubscribeFactory.on_rtp_server_timeout(sendRtpItem.getSsrc(), null, mediaInfo.getId());
+				hookSubscribe.removeSubscribe(hookSubscribeForRtpServerTimeout);
 				if (zlmrtpServerFactory.releasePort(mediaInfo, sendRtpItem.getSsrc())) {
 					if (sendRtpItem.isTcpActive()) {
 						startSendRtpStreamResult = zlmrtpServerFactory.startSendRtpPassive(mediaInfo, param);