Просмотр исходного кода

增加对 需要扩展SDP的设备的单独设置

panlinlin 5 лет назад
Родитель
Сommit
00e61d9a80

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

@@ -68,6 +68,9 @@ public class SIPCommander implements ISIPCommander {
 	@Value("${media.rtp.enable}")
 	private boolean rtpEnable;
 
+	@Value("${media.seniorSdp}")
+	private boolean seniorSdp;
+
 	@Autowired
 	private ZLMHttpHookSubscribe subscribe;
 
@@ -396,30 +399,53 @@ public class SIPCommander implements ISIPCommander {
 				mediaPort = mediaInfo.getRtpProxyPort();
 			}
 			String streamMode = device.getStreamMode().toUpperCase();
-			if("TCP-PASSIVE".equals(streamMode)) {
-				content.append("m=video "+ mediaPort +" TCP/RTP/AVP 126 125 99 34 98 97 96\r\n");
-			}else if ("TCP-ACTIVE".equals(streamMode)) {
-				content.append("m=video "+ mediaPort +" TCP/RTP/AVP 126 125 99 34 98 97 96\r\n");
-			}else if("UDP".equals(streamMode)) {
-				content.append("m=video "+ mediaPort +" RTP/AVP 126 125 99 34 98 97 96\r\n");
-			}
-			content.append("a=recvonly\r\n");
-			content.append("a=fmtp:126 profile-level-id=42e01e\r\n");
-			content.append("a=rtpmap:126 H264/90000\r\n");
-			content.append("a=rtpmap:125 H264S/90000\r\n");
-			content.append("a=fmtp:125 profile-level-id=42e01e\r\n");
-			content.append("a=rtpmap:99 MP4V-ES/90000\r\n");
-			content.append("a=fmtp:99 profile-level-id=3\r\n");
-			content.append("a=rtpmap:98 H264/90000\r\n");
-			content.append("a=rtpmap:97 MPEG4/90000\r\n");
-			content.append("a=rtpmap:96 PS/90000\r\n");
-			if("TCP-PASSIVE".equals(streamMode)){ // tcp被动模式
-				content.append("a=setup:passive\r\n");
-				content.append("a=connection:new\r\n");
-			}else if ("TCP-ACTIVE".equals(streamMode)) { // tcp主动模式
-				content.append("a=setup:active\r\n");
-				content.append("a=connection:new\r\n");
+
+			if (seniorSdp) {
+				if("TCP-PASSIVE".equals(streamMode)) {
+					content.append("m=video "+ mediaPort +" TCP/RTP/AVP 126 125 99 34 98 97 96\r\n");
+				}else if ("TCP-ACTIVE".equals(streamMode)) {
+					content.append("m=video "+ mediaPort +" TCP/RTP/AVP 126 125 99 34 98 97 96\r\n");
+				}else if("UDP".equals(streamMode)) {
+					content.append("m=video "+ mediaPort +" RTP/AVP 126 125 99 34 98 97 96\r\n");
+				}
+				content.append("a=recvonly\r\n");
+				content.append("a=fmtp:126 profile-level-id=42e01e\r\n");
+				content.append("a=rtpmap:126 H264/90000\r\n");
+				content.append("a=rtpmap:125 H264S/90000\r\n");
+				content.append("a=fmtp:125 profile-level-id=42e01e\r\n");
+				content.append("a=rtpmap:99 MP4V-ES/90000\r\n");
+				content.append("a=fmtp:99 profile-level-id=3\r\n");
+				content.append("a=rtpmap:98 H264/90000\r\n");
+				content.append("a=rtpmap:97 MPEG4/90000\r\n");
+				content.append("a=rtpmap:96 PS/90000\r\n");
+				if("TCP-PASSIVE".equals(streamMode)){ // tcp被动模式
+					content.append("a=setup:passive\r\n");
+					content.append("a=connection:new\r\n");
+				}else if ("TCP-ACTIVE".equals(streamMode)) { // tcp主动模式
+					content.append("a=setup:active\r\n");
+					content.append("a=connection:new\r\n");
+				}
+			}else {
+				if("TCP-PASSIVE".equals(streamMode)) {
+					content.append("m=video "+ mediaPort +" TCP/RTP/AVP 96 98 97\r\n");
+				}else if ("TCP-ACTIVE".equals(streamMode)) {
+					content.append("m=video "+ mediaPort +" TCP/RTP/AVP 96 98 97\r\n");
+				}else if("UDP".equals(streamMode)) {
+					content.append("m=video "+ mediaPort +" RTP/AVP 96 98 97\r\n");
+				}
+				content.append("a=recvonly\r\n");
+				content.append("a=rtpmap:96 PS/90000\r\n");
+				content.append("a=rtpmap:98 H264/90000\r\n");
+				content.append("a=rtpmap:97 MPEG4/90000\r\n");
+				if("TCP-PASSIVE".equals(streamMode)){ // tcp被动模式
+					content.append("a=setup:passive\r\n");
+					content.append("a=connection:new\r\n");
+				}else if ("TCP-ACTIVE".equals(streamMode)) { // tcp主动模式
+					content.append("a=setup:active\r\n");
+					content.append("a=connection:new\r\n");
+				}
 			}
+
 	        content.append("y="+ssrc+"\r\n");//ssrc
 	        
 	        Request request = headerProvider.createPlaybackInviteRequest(device, channelId, content.toString(), null, "playback", null);

+ 3 - 1
src/main/resources/application-dev.yml

@@ -70,8 +70,10 @@ media:
     secret: 035c73f7-bb6b-4889-a715-d9eb2d1925cc
     # [可选] zlm服务器的general.streamNoneReaderDelayMS
     streamNoneReaderDelayMS:  600000  # 无人观看多久自动关闭流, -1表示永不自动关闭,即 关闭按需拉流
-    # [可选] 自动点播, 使用固定流地址进行播放时,如果未点播则自动进行点播
+    # [可选] 自动点播, 使用固定流地址进行播放时,如果未点播则自动进行点播, 需要rtp.enable=true
     autoApplyPlay: true
+    # [可选] 部分设备需要扩展SDP,需要打开此设置
+    seniorSdp: false
     # 启用udp多端口模式, 详细解释参考: https://github.com/xia-chu/ZLMediaKit/wiki/GB28181%E6%8E%A8%E6%B5%81 下的高阶使用
     rtp:
         # [可选] 是否启用udp多端口模式, 开启后会在udpPortRange范围内选择端口用于媒体流传输