[*] 配置结构调整
This commit is contained in:
@@ -29,7 +29,7 @@
|
|||||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
| taoyao-media |
|
| taoyao-media |
|
||||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
| taoyao-moon(MCU/SFU) | |
|
| taoyao-moon | |
|
||||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ taoyao-mesh +
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ taoyao-mesh +
|
||||||
| taoyao-kurento | |
|
| taoyao-kurento | |
|
||||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
|
|
||||||
流媒体点对点连接,不经过服务端。
|
流媒体点对点连接,不经过服务端。
|
||||||
|
|
||||||
#### 注意事项
|
#### 功能简介
|
||||||
|
|
||||||
* ~~直播~~
|
* ~~直播~~
|
||||||
* 会议:一对一、~~多对多~~
|
* 会议:一对一、~~多对多~~
|
||||||
@@ -60,7 +60,7 @@
|
|||||||
|
|
||||||
> 为什么叫`Moon`:因为这是古诗词中最美丽的意象
|
> 为什么叫`Moon`:因为这是古诗词中最美丽的意象
|
||||||
|
|
||||||
#### 注意事项
|
#### 功能简介
|
||||||
|
|
||||||
* 需要安装[KMS服务](./docs/Deploy.md#kmskurento-media-server)
|
* 需要安装[KMS服务](./docs/Deploy.md#kmskurento-media-server)
|
||||||
* 提供混音、变声、美颜、录制等等媒体功能
|
* 提供混音、变声、美颜、录制等等媒体功能
|
||||||
|
|||||||
@@ -48,6 +48,11 @@ import org.springframework.web.servlet.NoHandlerFoundException;
|
|||||||
import com.acgist.taoyao.boot.controller.TaoyaoControllerAdvice;
|
import com.acgist.taoyao.boot.controller.TaoyaoControllerAdvice;
|
||||||
import com.acgist.taoyao.boot.controller.TaoyaoErrorController;
|
import com.acgist.taoyao.boot.controller.TaoyaoErrorController;
|
||||||
import com.acgist.taoyao.boot.model.MessageCode;
|
import com.acgist.taoyao.boot.model.MessageCode;
|
||||||
|
import com.acgist.taoyao.boot.property.IdProperties;
|
||||||
|
import com.acgist.taoyao.boot.property.MediaProperties;
|
||||||
|
import com.acgist.taoyao.boot.property.SecurityProperties;
|
||||||
|
import com.acgist.taoyao.boot.property.TaoyaoProperties;
|
||||||
|
import com.acgist.taoyao.boot.property.WebrtcProperties;
|
||||||
import com.acgist.taoyao.boot.service.IdService;
|
import com.acgist.taoyao.boot.service.IdService;
|
||||||
import com.acgist.taoyao.boot.service.impl.IdServiceImpl;
|
import com.acgist.taoyao.boot.service.impl.IdServiceImpl;
|
||||||
import com.acgist.taoyao.boot.utils.ErrorUtils;
|
import com.acgist.taoyao.boot.utils.ErrorUtils;
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
package com.acgist.taoyao.boot.config;
|
|
||||||
|
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.Setter;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 媒体配置
|
|
||||||
*
|
|
||||||
* @author acgist
|
|
||||||
*/
|
|
||||||
@Getter
|
|
||||||
@Setter
|
|
||||||
@Schema(title = "媒体配置", description = "媒体配置")
|
|
||||||
@ConfigurationProperties(prefix = "taoyao.media")
|
|
||||||
public class MediaProperties {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 音频配置
|
|
||||||
*/
|
|
||||||
private MediaAudioProperties audio;
|
|
||||||
/**
|
|
||||||
* 视频配置
|
|
||||||
*/
|
|
||||||
private MediaVideoProperties video;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -11,6 +11,9 @@ import org.springframework.context.annotation.Bean;
|
|||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.context.annotation.Profile;
|
import org.springframework.context.annotation.Profile;
|
||||||
|
|
||||||
|
import com.acgist.taoyao.boot.property.SecurityProperties;
|
||||||
|
import com.acgist.taoyao.boot.property.TaoyaoProperties;
|
||||||
|
|
||||||
import io.swagger.v3.oas.models.Components;
|
import io.swagger.v3.oas.models.Components;
|
||||||
import io.swagger.v3.oas.models.OpenAPI;
|
import io.swagger.v3.oas.models.OpenAPI;
|
||||||
import io.swagger.v3.oas.models.info.Contact;
|
import io.swagger.v3.oas.models.info.Contact;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.acgist.taoyao.boot.config;
|
package com.acgist.taoyao.boot.property;
|
||||||
|
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.acgist.taoyao.boot.config;
|
package com.acgist.taoyao.boot.property;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.acgist.taoyao.boot.config;
|
package com.acgist.taoyao.boot.property;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
package com.acgist.taoyao.boot.property;
|
||||||
|
|
||||||
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 媒体配置
|
||||||
|
*
|
||||||
|
* @author acgist
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@Schema(title = "媒体配置", description = "媒体配置")
|
||||||
|
@ConfigurationProperties(prefix = "taoyao.media")
|
||||||
|
public class MediaProperties {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 音频配置
|
||||||
|
*/
|
||||||
|
@Schema(title = "音频配置", description = "音频配置")
|
||||||
|
private MediaAudioProperties audio;
|
||||||
|
/**
|
||||||
|
* 视频配置
|
||||||
|
*/
|
||||||
|
@Schema(title = "视频配置", description = "视频配置")
|
||||||
|
private MediaVideoProperties video;
|
||||||
|
/**
|
||||||
|
* 高清视频
|
||||||
|
*/
|
||||||
|
@Schema(title = "高清视频", description = "高清视频")
|
||||||
|
private MediaVideoProperties highVideo;
|
||||||
|
/**
|
||||||
|
* 标清视频
|
||||||
|
*/
|
||||||
|
@Schema(title = "标清视频", description = "标清视频")
|
||||||
|
private MediaVideoProperties normVideo;
|
||||||
|
/**
|
||||||
|
* 流畅视频
|
||||||
|
*/
|
||||||
|
@Schema(title = "流畅视频", description = "流畅视频")
|
||||||
|
private MediaVideoProperties flowVideo;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.acgist.taoyao.boot.config;
|
package com.acgist.taoyao.boot.property;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package com.acgist.taoyao.boot.property;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Moon架构配置
|
||||||
|
*
|
||||||
|
* @author acgist
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@Schema(title = "Moon架构配置", description = "Moon架构配置")
|
||||||
|
public class MoonProperties {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否混音
|
||||||
|
*/
|
||||||
|
@Schema(title = "是否混音", description = "是否混音")
|
||||||
|
private Boolean audioMix;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.acgist.taoyao.boot.config;
|
package com.acgist.taoyao.boot.property;
|
||||||
|
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.acgist.taoyao.boot.config;
|
package com.acgist.taoyao.boot.property;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.acgist.taoyao.boot.config;
|
package com.acgist.taoyao.boot.property;
|
||||||
|
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.acgist.taoyao.boot.config;
|
package com.acgist.taoyao.boot.property;
|
||||||
|
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
|
|
||||||
@@ -65,6 +65,11 @@ public class WebrtcProperties {
|
|||||||
*/
|
*/
|
||||||
@Schema(title = "KMS配置", description = "KMS配置")
|
@Schema(title = "KMS配置", description = "KMS配置")
|
||||||
private KmsProperties kms;
|
private KmsProperties kms;
|
||||||
|
/**
|
||||||
|
* Moon架构配置
|
||||||
|
*/
|
||||||
|
@Schema(title = "Moon架构配置", description = "Moon架构配置")
|
||||||
|
private MoonProperties moon;
|
||||||
/**
|
/**
|
||||||
* 信令配置
|
* 信令配置
|
||||||
*/
|
*/
|
||||||
@@ -4,7 +4,7 @@ import java.time.LocalDateTime;
|
|||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
import com.acgist.taoyao.boot.config.IdProperties;
|
import com.acgist.taoyao.boot.property.IdProperties;
|
||||||
import com.acgist.taoyao.boot.service.IdService;
|
import com.acgist.taoyao.boot.service.IdService;
|
||||||
|
|
||||||
public class IdServiceImpl implements IdService {
|
public class IdServiceImpl implements IdService {
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>taoyao-media</name>
|
<name>taoyao-media</name>
|
||||||
<description>媒体:录制、视频(水印、美颜、AI识别)、音频(降噪、混音、变声)</description>
|
<description>媒体:录制、音频(降噪、混音、变声)、视频(水印、美颜、AI识别)</description>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ import org.springframework.web.bind.annotation.GetMapping;
|
|||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import com.acgist.taoyao.boot.config.MediaProperties;
|
|
||||||
import com.acgist.taoyao.boot.config.WebrtcProperties;
|
|
||||||
import com.acgist.taoyao.boot.model.Message;
|
import com.acgist.taoyao.boot.model.Message;
|
||||||
|
import com.acgist.taoyao.boot.property.MediaProperties;
|
||||||
|
import com.acgist.taoyao.boot.property.WebrtcProperties;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.media.Content;
|
import io.swagger.v3.oas.annotations.media.Content;
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpHeaders;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
|
|
||||||
import com.acgist.taoyao.boot.config.SecurityProperties;
|
|
||||||
import com.acgist.taoyao.boot.interceptor.InterceptorAdapter;
|
import com.acgist.taoyao.boot.interceptor.InterceptorAdapter;
|
||||||
|
import com.acgist.taoyao.boot.property.SecurityProperties;
|
||||||
|
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ package com.acgist.taoyao.interceptor;
|
|||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
import com.acgist.taoyao.boot.config.TaoyaoProperties;
|
|
||||||
import com.acgist.taoyao.boot.interceptor.InterceptorAdapter;
|
import com.acgist.taoyao.boot.interceptor.InterceptorAdapter;
|
||||||
|
import com.acgist.taoyao.boot.property.TaoyaoProperties;
|
||||||
|
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
|||||||
@@ -65,8 +65,25 @@ taoyao:
|
|||||||
format: H264
|
format: H264
|
||||||
bitrate: 1200
|
bitrate: 1200
|
||||||
frame-rate: 24
|
frame-rate: 24
|
||||||
resolution: 1280*760
|
resolution: 1920*1080
|
||||||
quality: high|standard|quick
|
# 高清视频
|
||||||
|
high-video:
|
||||||
|
format: H264
|
||||||
|
bitrate: 1000
|
||||||
|
frame-rate: 18
|
||||||
|
resolution: 1280*720
|
||||||
|
# 标清视频
|
||||||
|
norm-video:
|
||||||
|
format: H264
|
||||||
|
bitrate: 800
|
||||||
|
frame-rate: 16
|
||||||
|
resolution: 720*480
|
||||||
|
# 流畅视频
|
||||||
|
flow-video:
|
||||||
|
format: H264
|
||||||
|
bitrate: 600
|
||||||
|
frame-rate: 16
|
||||||
|
resolution: 640*480
|
||||||
# WebRTC配置
|
# WebRTC配置
|
||||||
webrtc:
|
webrtc:
|
||||||
# 架构模式
|
# 架构模式
|
||||||
@@ -94,6 +111,9 @@ taoyao:
|
|||||||
websocket: /websocket.signal
|
websocket: /websocket.signal
|
||||||
username: username
|
username: username
|
||||||
password: password
|
password: password
|
||||||
|
# Moon架构配置
|
||||||
|
moon:
|
||||||
|
audio-mix: true
|
||||||
# 信令服务配置
|
# 信令服务配置
|
||||||
signal:
|
signal:
|
||||||
host: 192.168.1.100
|
host: 192.168.1.100
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ import org.springframework.context.ApplicationContext;
|
|||||||
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
|
|
||||||
import com.acgist.taoyao.boot.annotation.Manager;
|
import com.acgist.taoyao.boot.annotation.Manager;
|
||||||
import com.acgist.taoyao.boot.config.TaoyaoProperties;
|
|
||||||
import com.acgist.taoyao.boot.model.Message;
|
import com.acgist.taoyao.boot.model.Message;
|
||||||
|
import com.acgist.taoyao.boot.property.TaoyaoProperties;
|
||||||
import com.acgist.taoyao.signal.event.client.ClientCloseEvent;
|
import com.acgist.taoyao.signal.event.client.ClientCloseEvent;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|||||||
@@ -4,10 +4,10 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
|
|
||||||
import com.acgist.taoyao.boot.config.TaoyaoProperties;
|
|
||||||
import com.acgist.taoyao.boot.model.Header;
|
import com.acgist.taoyao.boot.model.Header;
|
||||||
import com.acgist.taoyao.boot.model.Message;
|
import com.acgist.taoyao.boot.model.Message;
|
||||||
import com.acgist.taoyao.boot.model.MessageCode;
|
import com.acgist.taoyao.boot.model.MessageCode;
|
||||||
|
import com.acgist.taoyao.boot.property.TaoyaoProperties;
|
||||||
import com.acgist.taoyao.boot.service.IdService;
|
import com.acgist.taoyao.boot.service.IdService;
|
||||||
import com.acgist.taoyao.signal.client.ClientSessionManager;
|
import com.acgist.taoyao.signal.client.ClientSessionManager;
|
||||||
import com.acgist.taoyao.signal.event.ApplicationEventAdapter;
|
import com.acgist.taoyao.signal.event.ApplicationEventAdapter;
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ import java.util.Map;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
import com.acgist.taoyao.boot.annotation.Protocol;
|
import com.acgist.taoyao.boot.annotation.Protocol;
|
||||||
import com.acgist.taoyao.boot.config.MediaProperties;
|
|
||||||
import com.acgist.taoyao.boot.config.WebrtcProperties;
|
|
||||||
import com.acgist.taoyao.boot.model.Message;
|
import com.acgist.taoyao.boot.model.Message;
|
||||||
|
import com.acgist.taoyao.boot.property.MediaProperties;
|
||||||
|
import com.acgist.taoyao.boot.property.WebrtcProperties;
|
||||||
import com.acgist.taoyao.boot.utils.DateUtils;
|
import com.acgist.taoyao.boot.utils.DateUtils;
|
||||||
import com.acgist.taoyao.boot.utils.DateUtils.DateTimeStyle;
|
import com.acgist.taoyao.boot.utils.DateUtils.DateTimeStyle;
|
||||||
import com.acgist.taoyao.signal.client.ClientSession;
|
import com.acgist.taoyao.signal.client.ClientSession;
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
import com.acgist.taoyao.boot.annotation.Protocol;
|
import com.acgist.taoyao.boot.annotation.Protocol;
|
||||||
import com.acgist.taoyao.boot.config.SecurityProperties;
|
|
||||||
import com.acgist.taoyao.boot.model.Message;
|
import com.acgist.taoyao.boot.model.Message;
|
||||||
import com.acgist.taoyao.boot.model.MessageCode;
|
import com.acgist.taoyao.boot.model.MessageCode;
|
||||||
|
import com.acgist.taoyao.boot.property.SecurityProperties;
|
||||||
import com.acgist.taoyao.signal.client.ClientSession;
|
import com.acgist.taoyao.signal.client.ClientSession;
|
||||||
import com.acgist.taoyao.signal.event.client.ClientRegisterEvent;
|
import com.acgist.taoyao.signal.event.client.ClientRegisterEvent;
|
||||||
import com.acgist.taoyao.signal.protocol.ProtocolMapAdapter;
|
import com.acgist.taoyao.signal.protocol.ProtocolMapAdapter;
|
||||||
|
|||||||
@@ -17,8 +17,8 @@
|
|||||||
<description>WebRTC模块</description>
|
<description>WebRTC模块</description>
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
<module>taoyao-webrtc-moon</module>
|
|
||||||
<module>taoyao-webrtc-mesh</module>
|
<module>taoyao-webrtc-mesh</module>
|
||||||
|
<module>taoyao-webrtc-moon</module>
|
||||||
<module>taoyao-webrtc-kurento</module>
|
<module>taoyao-webrtc-kurento</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user