添加拉流代理相关接口-获取FFMPEG命令模板

结构优化
648540858 2024-01-08 23:50:41 +08:00
parent 8d9916f94e
commit 7c7b35ca80
5 changed files with 63 additions and 7 deletions

View File

@ -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<FFmpegCmdInfo> getFFmpegCMDList(String mediaServerID);
}

View File

@ -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<FFmpegCmdInfo> getFFmpegCMDList(String mediaServerId) {
MediaServerItem mediaServerItem = mediaServerMapper.queryOne(mediaServerId);
if (mediaServerItem == null) {
throw new ControllerException(ErrorCode.ERROR100.getCode(), "MediaServer不存在");
}
List<FFmpegCmdInfo> 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;
}
}

View File

@ -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) {

View File

@ -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;
}
}

View File

@ -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<FFmpegCmdInfo> getFFmpegCMDList(String mediaServerId) {
return mediaServerService.getFFmpegCMDList(mediaServerId);
}
@GetMapping(value = "/media_server/one/{id}")
@ResponseBody
@Operation(summary = "停止视频回放", security = @SecurityRequirement(name = JwtUtils.HEADER))