From 7c7b35ca806df3a6dff8a5cf5e3e57f9b5ad363a Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: Mon, 8 Jan 2024 23:50:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8B=89=E6=B5=81=E4=BB=A3?= =?UTF-8?q?=E7=90=86=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3-=E8=8E=B7?= =?UTF-8?q?=E5=8F=96FFMPEG=E5=91=BD=E4=BB=A4=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iot/vmp/service/IMediaServerService.java | 3 ++ .../service/impl/MediaServerServiceImpl.java | 22 +++++++++++++++ .../service/impl/StreamProxyServiceImpl.java | 5 ++-- .../iot/vmp/vmanager/bean/FFmpegCmdInfo.java | 28 +++++++++++++++++++ .../vmp/vmanager/server/ServerController.java | 12 +++++--- 5 files changed, 63 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/genersoft/iot/vmp/vmanager/bean/FFmpegCmdInfo.java diff --git a/src/main/java/com/genersoft/iot/vmp/service/IMediaServerService.java b/src/main/java/com/genersoft/iot/vmp/service/IMediaServerService.java index e259b4e9a..105b8117b 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/IMediaServerService.java +++ b/src/main/java/com/genersoft/iot/vmp/service/IMediaServerService.java @@ -7,6 +7,7 @@ import com.genersoft.iot.vmp.media.zlm.dto.ServerKeepaliveData; import com.genersoft.iot.vmp.media.zlm.dto.StreamMediaInfo; import com.genersoft.iot.vmp.service.bean.MediaServerLoad; import com.genersoft.iot.vmp.service.bean.SSRCInfo; +import com.genersoft.iot.vmp.vmanager.bean.FFmpegCmdInfo; import com.genersoft.iot.vmp.vmanager.bean.RecordFile; import java.util.List; @@ -98,4 +99,6 @@ public interface IMediaServerService { * 获取媒体流的信息 */ StreamMediaInfo getMediaInfo(String mediaServerId, String app, String stream); + + List getFFmpegCMDList(String mediaServerID); } diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java index 5d4c4706e..d94395612 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java @@ -26,6 +26,7 @@ import com.genersoft.iot.vmp.utils.DateUtil; import com.genersoft.iot.vmp.utils.JsonUtil; import com.genersoft.iot.vmp.utils.redis.RedisUtil; import com.genersoft.iot.vmp.vmanager.bean.ErrorCode; +import com.genersoft.iot.vmp.vmanager.bean.FFmpegCmdInfo; import com.genersoft.iot.vmp.vmanager.bean.RecordFile; import okhttp3.OkHttpClient; import okhttp3.Request; @@ -783,4 +784,25 @@ public class MediaServerServiceImpl implements IMediaServerService { } return streamMediaInfo; } + + @Override + public List getFFmpegCMDList(String mediaServerId) { + MediaServerItem mediaServerItem = mediaServerMapper.queryOne(mediaServerId); + if (mediaServerItem == null) { + throw new ControllerException(ErrorCode.ERROR100.getCode(), "MediaServer不存在"); + } + List result = new ArrayList<>(); + JSONObject mediaServerConfigResuly = zlmresTfulUtils.getMediaServerConfig(mediaServerItem); + if (mediaServerConfigResuly != null && mediaServerConfigResuly.getInteger("code") == 0 + && mediaServerConfigResuly.getJSONArray("data").size() > 0){ + JSONObject mediaServerConfig = mediaServerConfigResuly.getJSONArray("data").getJSONObject(0); + + for (String key : mediaServerConfig.keySet()) { + if (key.startsWith("ffmpeg.cmd")){ + result.add(new FFmpegCmdInfo(key, mediaServerConfig.getString(key))); + } + } + } + return result; + } } diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java index 9a4e0b2d6..bf4549e50 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java @@ -258,9 +258,8 @@ public class StreamProxyServiceImpl implements IStreamProxyService { if (path.indexOf("/", 1) < 0) { throw new ControllerException(ErrorCode.ERROR100.getCode(), "解析DstUrl失败, 至少两层路径"); } - int appIndex = path.indexOf("/", 1); - String app = path.substring(1, appIndex); - String stream = path.substring(path.indexOf(app)); + String app = path.substring(1, path.indexOf("/", 2)); + String stream = path.substring(path.indexOf("/", 2) + 1); param.setApp(app); param.setStream(stream); } catch (MalformedURLException e) { diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/bean/FFmpegCmdInfo.java b/src/main/java/com/genersoft/iot/vmp/vmanager/bean/FFmpegCmdInfo.java new file mode 100644 index 000000000..cddb92aeb --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/bean/FFmpegCmdInfo.java @@ -0,0 +1,28 @@ +package com.genersoft.iot.vmp.vmanager.bean; + +public class FFmpegCmdInfo { + private String key; + + private String value; + + public FFmpegCmdInfo(String key, String value) { + this.key = key; + this.value = value; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } +} diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java index 0a8c85315..e88c989d0 100755 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/server/ServerController.java @@ -18,10 +18,7 @@ import com.genersoft.iot.vmp.media.zlm.dto.StreamMediaInfo; import com.genersoft.iot.vmp.service.*; import com.genersoft.iot.vmp.service.bean.MediaServerLoad; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; -import com.genersoft.iot.vmp.vmanager.bean.ErrorCode; -import com.genersoft.iot.vmp.vmanager.bean.ResourceBaseInfo; -import com.genersoft.iot.vmp.vmanager.bean.ResourceInfo; -import com.genersoft.iot.vmp.vmanager.bean.SystemConfigInfo; +import com.genersoft.iot.vmp.vmanager.bean.*; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.security.SecurityRequirement; @@ -95,6 +92,13 @@ public class ServerController { return mediaServerService.getAllOnline(); } + @GetMapping(value = "/media_server/ffmpeg_cmd/list") + @ResponseBody + @Operation(summary = "ffmpeg_cmd列表", security = @SecurityRequirement(name = JwtUtils.HEADER)) + public List getFFmpegCMDList(String mediaServerId) { + return mediaServerService.getFFmpegCMDList(mediaServerId); + } + @GetMapping(value = "/media_server/one/{id}") @ResponseBody @Operation(summary = "停止视频回放", security = @SecurityRequirement(name = JwtUtils.HEADER))