This commit is contained in:
chenzhangyue
2023-12-05 17:26:52 +08:00
parent 5d24b6c393
commit 8d7735cb55
7 changed files with 118 additions and 97 deletions

View File

@@ -7,10 +7,21 @@
ZLMediaKit的spring-boot starter, 对[ZLMediaKit](https://github.com/ZLMediaKit/ZLMediaKit)的API进行了封装,方便使用。支持集群化管理。
[文档链接](https://github.com/lunasaw/zlm-spring-boot-starter/blob/master/zlm-api.md)
[文档链接](https://github.com/lunasaw/zlm-spring-boot-starter/blob/master/zlm-api.md) [API文档](https://lunasaw.github.io/zlm-spring-boot-starter/)
[API文档](https://lunasaw.github.io/zlm-spring-boot-starter/)
![img.png](images/img.png)
### 快速开始
Hook接口使用类似io.github.lunasaw.zlm.service.LocalZlmHookService,实现ZlmHookService接口,重写方法,即可实现对ZLM的管理,或者继承AbstractZlmHookService,重写需要的方法
**默认实现了ZlmHookService接口的所有方法,均为放通默认返回,可以根据需要重写**
> ![img.png](img.png)
普通api接口使用直接静态方法调用io.github.lunasaw.zlm.api.ZlmRestService
> ![img.png](images/img.png)
```yaml
> 引入spring-boot-starter

BIN
images/restapi.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

View File

@@ -1,5 +1,20 @@
package io.github.lunasaw.zlm.api;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.TypeReference;
import com.google.common.collect.Maps;
import com.luna.common.check.Assert;
import com.luna.common.file.FileTools;
import com.luna.common.net.HttpUtils;
import io.github.lunasaw.zlm.constant.ApiConstants;
import io.github.lunasaw.zlm.entity.*;
import io.github.lunasaw.zlm.entity.req.MediaReq;
import io.github.lunasaw.zlm.entity.req.RecordReq;
import io.github.lunasaw.zlm.entity.req.SnapshotReq;
import io.github.lunasaw.zlm.entity.rtp.*;
import org.apache.commons.lang3.StringUtils;
import org.apache.hc.core5.http.ClassicHttpResponse;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
@@ -10,26 +25,6 @@ import java.util.List;
import java.util.Map;
import java.util.Optional;
import org.apache.commons.lang3.StringUtils;
import org.apache.hc.core5.http.ClassicHttpResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.TypeReference;
import com.google.common.collect.Maps;
import com.luna.common.check.Assert;
import com.luna.common.file.FileTools;
import com.luna.common.net.HttpUtils;
import io.github.lunasaw.zlm.config.ZlmProperties;
import io.github.lunasaw.zlm.constant.ApiConstants;
import io.github.lunasaw.zlm.entity.*;
import io.github.lunasaw.zlm.entity.req.MediaReq;
import io.github.lunasaw.zlm.entity.req.RecordReq;
import io.github.lunasaw.zlm.entity.req.SnapshotReq;
import io.github.lunasaw.zlm.entity.rtp.*;
/**
* @author luna
* @version 1.0
@@ -40,6 +35,7 @@ public class ZlmRestService {
private static final String URL = "http://127.0.0.1:9092";
private static final String SECRET = "zlm";
/**
* 获取版本信息
*/
@@ -49,6 +45,10 @@ public class ZlmRestService {
});
}
public static ServerResponse<List<String>> getApiList(String host, String secret) {
return getApiList(host, secret, new HashMap<>());
}
/**
* 获取流媒体服务器列表
*/
@@ -154,7 +154,7 @@ public class ZlmRestService {
* @param host
* @param secret
* @param localPort 筛选本机端口,例如筛选rtsp链接:554
* @param peerIp 筛选客户端ip
* @param peerIp 筛选客户端ip
* @return
*/
public static ServerResponse<List<TcpLink>> getAllSession(String host, String secret, String localPort, String peerIp) {
@@ -439,7 +439,7 @@ public class ZlmRestService {
/**
* 获取rtp推流信息
*
*
* @param streamId RTP的ssrc,16进制字符串或者是流的id(openRtpServer接口指定)
*/
public static RtpInfoResult getRtpInfo(String host, String secret, String streamId) {

View File

@@ -1,7 +1,7 @@
package io.github.lunasaw.zlm.config;
import io.github.lunasaw.zlm.hook.service.impl.DefaultZlmHookServiceImpl;
import io.github.lunasaw.zlm.hook.service.ZlmHookService;
import io.github.lunasaw.zlm.hook.service.impl.DefaultZlmHookServiceImpl;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;

View File

@@ -0,0 +1,76 @@
package io.github.lunasaw.zlm.hook.service;
import io.github.lunasaw.zlm.entity.ServerNodeConfig;
import io.github.lunasaw.zlm.hook.param.*;
import io.github.lunasaw.zlm.hook.service.ZlmHookService;
import lombok.extern.slf4j.Slf4j;
/**
* @author luna
* @version 1.0
* @date 2023/12/3
* @description: 默认的钩子服务实现
*/
@Slf4j
public abstract class AbstractZlmHookService implements ZlmHookService {
@Override
public void onServerKeepLive(OnServerKeepaliveHookParam param) {
}
@Override
public HookResult onPlay(OnPlayHookParam param) {
return HookResult.SUCCESS();
}
@Override
public HookResultForOnPublish onPublish(OnPublishHookParam param) {
return HookResultForOnPublish.SUCCESS();
}
@Override
public void onStreamChanged(OnStreamChangedHookParam param) {
}
@Override
public HookResultForStreamNoneReader onStreamNoneReader(OnStreamNoneReaderHookParam param) {
return HookResultForStreamNoneReader.SUCCESS();
}
@Override
public void onStreamNotFound(OnStreamNotFoundHookParam param) {
}
@Override
public void onServerStarted(ServerNodeConfig param) {
}
@Override
public void onSendRtpStopped(OnSendRtpStoppedHookParam param) {
}
@Override
public void onRtpServerTimeout(OnRtpServerTimeoutHookParam param) {
}
@Override
public HookResultForOnHttpAccess onHttpAccess(OnHttpAccessParam param) {
return HookResultForOnHttpAccess.SUCCESS();
}
@Override
public HookResultForOnRtspRealm onRtspRealm(OnRtspRealmHookParam param) {
return HookResultForOnRtspRealm.SUCCESS();
}
@Override
public HookResultForOnRtspAuth onRtspAuth(OnRtspAuthHookParam param) {
return HookResultForOnRtspAuth.SUCCESS();
}
@Override
public void onFlowReport(OnFlowReportHookParam param) {
}
}

View File

@@ -1,76 +1,10 @@
package io.github.lunasaw.zlm.hook.service.impl;
import io.github.lunasaw.zlm.entity.ServerNodeConfig;
import io.github.lunasaw.zlm.hook.param.*;
import io.github.lunasaw.zlm.hook.service.ZlmHookService;
import lombok.extern.slf4j.Slf4j;
import io.github.lunasaw.zlm.hook.service.AbstractZlmHookService;
/**
* @author luna
* @version 1.0
* @date 2023/12/3
* @description: 默认的钩子服务实现
* @date 2023/12/5
*/
@Slf4j
public class DefaultZlmHookServiceImpl implements ZlmHookService {
@Override
public void onServerKeepLive(OnServerKeepaliveHookParam param) {
}
@Override
public HookResult onPlay(OnPlayHookParam param) {
return HookResult.SUCCESS();
}
@Override
public HookResultForOnPublish onPublish(OnPublishHookParam param) {
return HookResultForOnPublish.SUCCESS();
}
@Override
public void onStreamChanged(OnStreamChangedHookParam param) {
}
@Override
public HookResultForStreamNoneReader onStreamNoneReader(OnStreamNoneReaderHookParam param) {
return HookResultForStreamNoneReader.SUCCESS();
}
@Override
public void onStreamNotFound(OnStreamNotFoundHookParam param) {
}
@Override
public void onServerStarted(ServerNodeConfig param) {
}
@Override
public void onSendRtpStopped(OnSendRtpStoppedHookParam param) {
}
@Override
public void onRtpServerTimeout(OnRtpServerTimeoutHookParam param) {
}
@Override
public HookResultForOnHttpAccess onHttpAccess(OnHttpAccessParam param) {
return HookResultForOnHttpAccess.SUCCESS();
}
@Override
public HookResultForOnRtspRealm onRtspRealm(OnRtspRealmHookParam param) {
return HookResultForOnRtspRealm.SUCCESS();
}
@Override
public HookResultForOnRtspAuth onRtspAuth(OnRtspAuthHookParam param) {
return HookResultForOnRtspAuth.SUCCESS();
}
@Override
public void onFlowReport(OnFlowReportHookParam param) {
}
public class DefaultZlmHookServiceImpl extends AbstractZlmHookService {
}

View File

@@ -3,7 +3,7 @@ package io.github.lunasaw.zlm.service;
import com.alibaba.fastjson2.JSON;
import io.github.lunasaw.zlm.entity.ServerNodeConfig;
import io.github.lunasaw.zlm.hook.param.*;
import io.github.lunasaw.zlm.hook.service.ZlmHookService;
import io.github.lunasaw.zlm.hook.service.AbstractZlmHookService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -15,7 +15,7 @@ import org.springframework.stereotype.Service;
*/
@Slf4j
@Service
public class ZlmHookServiceImpl implements ZlmHookService {
public class LocalZlmHookService extends AbstractZlmHookService {
@Override
public void onServerKeepLive(OnServerKeepaliveHookParam param) {
}