Ver código fonte

修复前端按下不能正常恢复问题

kindring 2 anos atrás
pai
commit
8cbc2e4c1a

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

@@ -877,6 +877,7 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements
                 logger.error("[命令发送失败] invite BAD_REQUEST: {}", e.getMessage());
             }
             String contentString = new String(request.getRawContent());
+            logger.info("[invite交互] 设备>>服务端 {}",contentString);
             // jainSip不支持y=字段, 移除移除以解析。
             String substring = contentString;
             String ssrc = "0000000404";

+ 10 - 7
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java

@@ -390,12 +390,15 @@ public class ZLMRTPServerFactory {
      * @param ssrc
      * @return
      */
-    public Map<String, Object> createStartSendRtpStreamAudioData(MediaServerItem serverItem,String streamId,String recv_stream_id,String ssrc,String dst_url,int dst_port){
+    public Map<String, Object> createStartSendRtpStreamAudioData(MediaServerItem serverItem,String app, String streamId,String recv_stream_id,String ssrc,String dst_url,int dst_port){
         String sendRtpPortRange = serverItem.getSendRtpPortRange();
         if (ObjectUtils.isEmpty(sendRtpPortRange)) {
-            return null;
+            logger.error("无法随机获取rtp端口");
+//            return null;
+            sendRtpPortRange="30000,35000";
         }
-        String[] portRangeStrArray = serverItem.getSendRtpPortRange().split(",");
+
+        String[] portRangeStrArray = sendRtpPortRange.split(",");
         int localPort = -1;
         if (portRangeStrArray.length != 2) {
             localPort = getFreePort(serverItem, 30000, 30500, null);
@@ -413,11 +416,11 @@ public class ZLMRTPServerFactory {
         param.put("src_port", 31234);
         param.put("only_audio", 1);
         param.put("ssrc", ssrc);
-        param.put("app", "rtc");
+        param.put("app", app);
 
 
 //        param.put("recv_stream_id",streamId );
-        param.put("stream", recv_stream_id);
+//        param.put("stream", recv_stream_id);
 //        param.put("from_mp4", 1);
         param.put("is_udp", 0);
         // start send rtp
@@ -427,8 +430,8 @@ public class ZLMRTPServerFactory {
         param.put("pt", 8);
         param.put("close_delay_ms", 15000);
 
-//        param.put("stream", streamId);
-//        param.put("recv_stream_id", recv_stream_id);
+        param.put("stream", recv_stream_id);
+//        param.put("recv_stream_id", streamId);
 
 //        logger.info("[你好] send json: ");
 //        logger.info("[你好] send json: {}",param.toString());

+ 1 - 1
src/main/java/com/genersoft/iot/vmp/service/IMediaServerService.java

@@ -58,7 +58,7 @@ public interface IMediaServerService {
 //    SSRCInfo startSendRtpServer(MediaServerItem mediaServerItem, String streamId,boolean ssrcCheck, boolean isPlayback);
 //    SSRCInfo startSendRtpServer(MediaServerItem mediaServerItem, String streamId, String presetSsrc, boolean ssrcCheck, boolean isPlayback, Integer port);
 //    SSRCInfo startSendRtpServer(MediaServerItem mediaServerItem, String streamId, String ssrc, boolean ssrcCheck, boolean isPlayback);
-    SSRCInfo startSendRtpServer(MediaServerItem mediaServerItem, String streamId,String audioStreamId,String addr,String port,String ssrc);
+    SSRCInfo startSendRtpServer(MediaServerItem mediaServerItem,String app, String streamId,String audioStreamId,String addr,String port,String ssrc);
 
     void closeSendRtpServer(MediaServerItem mediaServerItem, String streamId);
 

+ 4 - 1
src/main/java/com/genersoft/iot/vmp/service/IPlayService.java

@@ -31,7 +31,10 @@ public interface IPlayService {
               InviteTimeOutCallback timeoutCallback);
     void play(MediaServerItem mediaServerItem, String deviceId, String channelId, ZlmHttpHookSubscribe.Event event, SipSubscribe.Event errorEvent, Runnable timeoutCallback);
 
-    void openBroadcast(MediaServerItem mediaServerItem, String deviceId, String audioStreamId,
+    void openBroadcast(MediaServerItem mediaServerItem,
+                       String deviceId,
+                       String app,
+                       String audioStreamId,
                        HookSubscribeForKey broadcastForInviteHook,
                        NodeCallBack nodeCallBack,
                        Runnable timeoutCallback);

+ 4 - 2
src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java

@@ -174,9 +174,10 @@ public class MediaServerServiceImpl implements IMediaServerService {
 
 
     @Override
-    public SSRCInfo startSendRtpServer(MediaServerItem mediaServerItem, String streamId,String audioStreamId,
+    public SSRCInfo startSendRtpServer(MediaServerItem mediaServerItem,String app, String streamId,String audioStreamId,
                                        String addr,String port,String _ssrc) {
         if (mediaServerItem == null || mediaServerItem.getId() == null) {
+            logger.warn("无法连接至zlm!!!!!!!");
             return null;
         }
         // 获取mediaServer可用的ssrc
@@ -195,7 +196,8 @@ public class MediaServerServiceImpl implements IMediaServerService {
             }
             int rtpServerPort;
             // 创建
-            Map<String, Object> rtpParam = zlmrtpServerFactory.createStartSendRtpStreamAudioData(mediaServerItem, streamId,audioStreamId,_ssrc,addr, Integer.parseInt(port));
+            Map<String, Object> rtpParam = zlmrtpServerFactory.createStartSendRtpStreamAudioData(mediaServerItem,app, streamId,audioStreamId,_ssrc,addr, Integer.parseInt(port));
+//            logger.info("zlm start send {}",rtpParam.toString());
             JSONObject result = zlmrtpServerFactory.startSendRtpPassive(mediaServerItem,rtpParam);
 //            JSONObject result = zlmrtpServerFactory.startSendRtpStream(mediaServerItem,rtpParam);
             logger.info("zlm start send {}",result.toJSONString());

+ 2 - 1
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java

@@ -366,6 +366,7 @@ public class PlayServiceImpl implements IPlayService {
 
     public void openBroadcast(MediaServerItem mediaServerItem,
                               String deviceId,
+                              String app,
                               String audioStreamId,
                               HookSubscribeForKey broadcastForInviteHook,
                               NodeCallBack nodeCallBack,
@@ -397,7 +398,7 @@ public class PlayServiceImpl implements IPlayService {
             // TODO: 2023/3/7 开始下发invite信息给设备
             try {
                 // 向流媒体服务器申请创建 rtpServer 服务端口
-                ssrcInfo = mediaServerService.startSendRtpServer(mediaServerItem, streamId, audioStreamId,
+                ssrcInfo = mediaServerService.startSendRtpServer(mediaServerItem,app, streamId, audioStreamId,
                         json.getString("addr"),
                         json.getString("port"),
                         ssrcStr

+ 2 - 1
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java

@@ -312,7 +312,7 @@ public class PlayController {
 		resultHolder.put(key, uuid, result);
 		Device device = storager.queryVideoDevice(deviceId);
 		MediaServerItem newMediaServerItem = playService.getNewMediaServerItem(device);
-
+		logger.info("[语言广播] 分配的流媒体服务器为 {}",newMediaServerItem.getId());
 		if (newMediaServerItem == null) {
 			logger.warn("[语音广播] 无法连接至ZLM服务器");
 			WVPResult wvpResult = new WVPResult();
@@ -324,6 +324,7 @@ public class PlayController {
 			playService.openBroadcast(
 					newMediaServerItem,
 					deviceId,
+					app,
 					stream,
 					broadcastForInviteHook,
 					(int code,String tipMsg)->{

+ 1 - 1
web_src/config/index.js

@@ -3,7 +3,7 @@
 // see http://vuejs-templates.github.io/webpack for documentation.
 
 const path = require('path')
-const baseUrl = "https://192.168.1.26:29001"
+const baseUrl = "https://192.168.31.250:29001"
 const ZLMServer = "https://192.168.1.60:29010"
 module.exports = {
   dev: {

+ 3 - 2
web_src/src/components/common/microphone.vue

@@ -65,9 +65,10 @@ export default {
       if (this.audioConnected) {
         // 取消静音音频轨道
         if(this.mediaStream){
+          this.isRecording = true;
           let audioStream = this.mediaStream.getAudioTracks();
           audioStream.forEach(track=>{
-            track.enabled = false;
+            track.enabled = true;
           });
         }else{
           this.$message.error("无法获取音频流!");
@@ -84,6 +85,7 @@ export default {
       if (this.audioConnected && this.mediaStream) {
         let audioStream = this.mediaStream.getAudioTracks();
         audioStream.forEach(track => {
+          console.log("静音")
           track.enabled = false;
         });
       }
@@ -188,7 +190,6 @@ export default {
     },
     // 通知设备开启推流
     sendBroaderCast(stream,app) {
-
       let url = `/api/play/broadcast`
       url += `?deviceId=${this.deviceId}&stream=${stream}&app=${app}`;
       return this.$axios.axios({