zlm addStreamProxy,delStreamProxy api
This commit is contained in:
parent
4437638b0b
commit
ac2662b8ed
@ -0,0 +1,125 @@
|
|||||||
|
package cn.skcks.docking.gb28181.media.dto.proxy;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonNaming;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
|
||||||
|
public class AddStreamProxy {
|
||||||
|
/**
|
||||||
|
* 添加的流的虚拟主机,例如__defaultVhost__
|
||||||
|
*/
|
||||||
|
@Builder.Default
|
||||||
|
private String vhost = "__defaultVhost__";
|
||||||
|
/**
|
||||||
|
* 添加的流的应用名,例如live
|
||||||
|
*/
|
||||||
|
private String app;
|
||||||
|
/**
|
||||||
|
* 添加的流的id名
|
||||||
|
*/
|
||||||
|
private String stream;
|
||||||
|
/**
|
||||||
|
* 拉流地址
|
||||||
|
*/
|
||||||
|
private String url;
|
||||||
|
/**
|
||||||
|
* 转推失败重试次数,-1 无限重试
|
||||||
|
*/
|
||||||
|
private Integer retryCount;
|
||||||
|
/**
|
||||||
|
* rtsp拉流时,拉流方式,0:tcp,1:udp,2:组播
|
||||||
|
*/
|
||||||
|
private Integer rtpType;
|
||||||
|
/**
|
||||||
|
* 拉流超时时间,单位秒,float类型
|
||||||
|
*/
|
||||||
|
private Double timeoutSec;
|
||||||
|
/**
|
||||||
|
* 是否转换成hls-mpegts协议
|
||||||
|
*/
|
||||||
|
private Boolean enableHls;
|
||||||
|
/**
|
||||||
|
* 是否转换成hls-fmp4协议
|
||||||
|
*/
|
||||||
|
private Boolean enableHlsFmp4;
|
||||||
|
/**
|
||||||
|
* 是否允许mp4录制
|
||||||
|
*/
|
||||||
|
private Boolean enableMp4;
|
||||||
|
/**
|
||||||
|
* 是否转rtsp协议
|
||||||
|
*/
|
||||||
|
private Boolean enableRtsp;
|
||||||
|
/**
|
||||||
|
* 是否转rtmp/flv协议
|
||||||
|
*/
|
||||||
|
private Boolean enableRtmp;
|
||||||
|
/**
|
||||||
|
* 是否转http-ts/ws-ts协议
|
||||||
|
*/
|
||||||
|
private Boolean enableTs;
|
||||||
|
/**
|
||||||
|
* 是否转http-fmp4/ws-fmp4协议
|
||||||
|
*/
|
||||||
|
private Boolean enableFmp4;
|
||||||
|
/**
|
||||||
|
* 该协议是否有人观看才生成
|
||||||
|
*/
|
||||||
|
private Boolean hlsDemand;
|
||||||
|
/**
|
||||||
|
* 该协议是否有人观看才生成
|
||||||
|
*/
|
||||||
|
private Boolean rtspDemand;
|
||||||
|
/**
|
||||||
|
* 该协议是否有人观看才生成
|
||||||
|
*/
|
||||||
|
private Boolean rtmpDemand;
|
||||||
|
/**
|
||||||
|
* 该协议是否有人观看才生成
|
||||||
|
*/
|
||||||
|
private Boolean tsDemand;
|
||||||
|
/**
|
||||||
|
* 该协议是否有人观看才生成
|
||||||
|
*/
|
||||||
|
private Boolean fmp4Demand;
|
||||||
|
/**
|
||||||
|
* 转协议时是否开启音频
|
||||||
|
*/
|
||||||
|
private Boolean enableAudio;
|
||||||
|
/**
|
||||||
|
* 转协议时,无音频是否添加静音aac音频
|
||||||
|
*/
|
||||||
|
private Boolean addMuteAudio;
|
||||||
|
/**
|
||||||
|
* mp4录制文件保存根目录,置空使用默认
|
||||||
|
*/
|
||||||
|
private String mp4SavePath;
|
||||||
|
/**
|
||||||
|
* mp4录制切片大小,单位秒
|
||||||
|
*/
|
||||||
|
private Integer mp4MaxSecond;
|
||||||
|
/**
|
||||||
|
* MP4录制是否当作观看者参与播放人数计数
|
||||||
|
*/
|
||||||
|
private Boolean mp4AsPlayer;
|
||||||
|
/**
|
||||||
|
* hls文件保存保存根目录,置空使用默认
|
||||||
|
*/
|
||||||
|
private Boolean hlsSavePath;
|
||||||
|
/**
|
||||||
|
* 该流是否开启时间戳覆盖(0:绝对时间戳/1:系统时间戳/2:相对时间戳)
|
||||||
|
*/
|
||||||
|
private Integer modifyStamp;
|
||||||
|
/**
|
||||||
|
* 无人观看是否自动关闭流(不触发无人观看hook)
|
||||||
|
*/
|
||||||
|
private Boolean autoClose;
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
package cn.skcks.docking.gb28181.media.dto.proxy;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class AddStreamProxyResp {
|
||||||
|
/**
|
||||||
|
* 流的唯一标识
|
||||||
|
*/
|
||||||
|
private String key;
|
||||||
|
}
|
@ -4,5 +4,8 @@ import lombok.Data;
|
|||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class AddStreamPusherProxyResp {
|
public class AddStreamPusherProxyResp {
|
||||||
|
/**
|
||||||
|
* 流的唯一标识
|
||||||
|
*/
|
||||||
private String key;
|
private String key;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,8 @@
|
|||||||
|
package cn.skcks.docking.gb28181.media.dto.proxy;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class DelStreamProxyResp {
|
||||||
|
private Boolean flag;
|
||||||
|
}
|
@ -1,9 +1,7 @@
|
|||||||
package cn.skcks.docking.gb28181.media.proxy;
|
package cn.skcks.docking.gb28181.media.proxy;
|
||||||
|
|
||||||
import cn.skcks.docking.gb28181.media.dto.config.ServerConfig;
|
import cn.skcks.docking.gb28181.media.dto.config.ServerConfig;
|
||||||
import cn.skcks.docking.gb28181.media.dto.proxy.AddStreamPusherProxy;
|
import cn.skcks.docking.gb28181.media.dto.proxy.*;
|
||||||
import cn.skcks.docking.gb28181.media.dto.proxy.AddStreamPusherProxyResp;
|
|
||||||
import cn.skcks.docking.gb28181.media.dto.proxy.DelStreamPusherProxyResp;
|
|
||||||
import cn.skcks.docking.gb28181.media.dto.response.ZlmResponse;
|
import cn.skcks.docking.gb28181.media.dto.response.ZlmResponse;
|
||||||
import cn.skcks.docking.gb28181.media.dto.rtp.*;
|
import cn.skcks.docking.gb28181.media.dto.rtp.*;
|
||||||
import cn.skcks.docking.gb28181.media.dto.snap.Snap;
|
import cn.skcks.docking.gb28181.media.dto.snap.Snap;
|
||||||
@ -65,4 +63,10 @@ public interface ZlmMediaHttpClient {
|
|||||||
|
|
||||||
@GetMapping("/index/api/restartServer")
|
@GetMapping("/index/api/restartServer")
|
||||||
ZlmResponse<Void> restartServer(@RequestParam String secret);
|
ZlmResponse<Void> restartServer(@RequestParam String secret);
|
||||||
|
|
||||||
|
@PostMapping("/index/api/addStreamProxy")
|
||||||
|
ZlmResponse<AddStreamProxyResp> addStreamProxy(@RequestParam String secret, @RequestBody AddStreamProxy params);
|
||||||
|
|
||||||
|
@GetMapping("/index/api/delStreamProxy")
|
||||||
|
ZlmResponse<DelStreamProxyResp> delStreamProxy(@RequestParam String secret, @RequestParam String key);
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,7 @@
|
|||||||
package cn.skcks.docking.gb28181.media.proxy;
|
package cn.skcks.docking.gb28181.media.proxy;
|
||||||
|
|
||||||
import cn.skcks.docking.gb28181.media.dto.config.ServerConfig;
|
import cn.skcks.docking.gb28181.media.dto.config.ServerConfig;
|
||||||
import cn.skcks.docking.gb28181.media.dto.proxy.AddStreamPusherProxy;
|
import cn.skcks.docking.gb28181.media.dto.proxy.*;
|
||||||
import cn.skcks.docking.gb28181.media.dto.proxy.AddStreamPusherProxyResp;
|
|
||||||
import cn.skcks.docking.gb28181.media.dto.proxy.DelStreamPusherProxyResp;
|
|
||||||
import cn.skcks.docking.gb28181.media.dto.response.ZlmResponse;
|
import cn.skcks.docking.gb28181.media.dto.response.ZlmResponse;
|
||||||
import cn.skcks.docking.gb28181.media.dto.rtp.*;
|
import cn.skcks.docking.gb28181.media.dto.rtp.*;
|
||||||
import cn.skcks.docking.gb28181.media.dto.snap.Snap;
|
import cn.skcks.docking.gb28181.media.dto.snap.Snap;
|
||||||
@ -132,5 +130,19 @@ public class ZlmMediaService {
|
|||||||
public ZlmResponse<Void> restartServer(){
|
public ZlmResponse<Void> restartServer(){
|
||||||
return exchange.restartServer(secret);
|
return exchange.restartServer(secret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 功能:动态添加rtsp/rtmp/hls/http-ts/http-flv拉流代理(只支持H264/H265/aac/G711/opus负载)
|
||||||
|
*/
|
||||||
|
public ZlmResponse<AddStreamProxyResp> addStreamProxy(AddStreamProxy params){
|
||||||
|
return exchange.addStreamProxy(secret, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 功能:关闭拉流代理
|
||||||
|
*/
|
||||||
|
public ZlmResponse<DelStreamProxyResp> delStreamProxy(String key){
|
||||||
|
return exchange.delStreamProxy(secret, key);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,9 +10,7 @@ import cn.skcks.docking.gb28181.media.config.ZlmMediaConfig;
|
|||||||
import cn.skcks.docking.gb28181.media.dto.config.FFMpegConfig;
|
import cn.skcks.docking.gb28181.media.dto.config.FFMpegConfig;
|
||||||
import cn.skcks.docking.gb28181.media.dto.config.HookConfig;
|
import cn.skcks.docking.gb28181.media.dto.config.HookConfig;
|
||||||
import cn.skcks.docking.gb28181.media.dto.config.ServerConfig;
|
import cn.skcks.docking.gb28181.media.dto.config.ServerConfig;
|
||||||
import cn.skcks.docking.gb28181.media.dto.proxy.AddStreamPusherProxy;
|
import cn.skcks.docking.gb28181.media.dto.proxy.*;
|
||||||
import cn.skcks.docking.gb28181.media.dto.proxy.AddStreamPusherProxyResp;
|
|
||||||
import cn.skcks.docking.gb28181.media.dto.proxy.DelStreamPusherProxyResp;
|
|
||||||
import cn.skcks.docking.gb28181.media.dto.response.ZlmResponse;
|
import cn.skcks.docking.gb28181.media.dto.response.ZlmResponse;
|
||||||
import cn.skcks.docking.gb28181.media.dto.response.ZlmResponseConvertor;
|
import cn.skcks.docking.gb28181.media.dto.response.ZlmResponseConvertor;
|
||||||
import cn.skcks.docking.gb28181.media.dto.rtp.CloseRtpServer;
|
import cn.skcks.docking.gb28181.media.dto.rtp.CloseRtpServer;
|
||||||
@ -186,4 +184,21 @@ public class MediaServiceTest {
|
|||||||
startSendRtp.setUdp(true);
|
startSendRtp.setUdp(true);
|
||||||
log.info("{}",JsonUtils.toJson(startSendRtp));
|
log.info("{}",JsonUtils.toJson(startSendRtp));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void streamProxyTest(){
|
||||||
|
AddStreamProxy addStreamProxy = AddStreamProxy.builder()
|
||||||
|
.app("proxy")
|
||||||
|
.stream("test")
|
||||||
|
.url("rtmp://127.0.0.1:1935/live/test")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
ZlmResponse<AddStreamProxyResp> addedStreamProxy = zlmMediaService.addStreamProxy(addStreamProxy);
|
||||||
|
log.info("{}", addedStreamProxy);
|
||||||
|
String key = Optional.ofNullable(addedStreamProxy.getData()).orElse(new AddStreamProxyResp()).getKey();
|
||||||
|
log.info("{}", key);
|
||||||
|
|
||||||
|
ZlmResponse<DelStreamProxyResp> delStreamProxyRespZlmResponse = zlmMediaService.delStreamProxy(key);
|
||||||
|
log.info("{}", delStreamProxyRespZlmResponse);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user