[*] 调整逻辑
This commit is contained in:
@@ -273,6 +273,8 @@
|
|||||||
|
|
||||||
### 关闭直播信令(3001)
|
### 关闭直播信令(3001)
|
||||||
|
|
||||||
|
### 直播广播信令(3002)
|
||||||
|
|
||||||
### 直播终端列表信令(3997)
|
### 直播终端列表信令(3997)
|
||||||
|
|
||||||
### 直播状态信令(3998)
|
### 直播状态信令(3998)
|
||||||
@@ -331,6 +333,8 @@
|
|||||||
|
|
||||||
广播
|
广播
|
||||||
|
|
||||||
|
### 会议广播信令(4006)
|
||||||
|
|
||||||
### 会议终端列表信令(4997)
|
### 会议终端列表信令(4997)
|
||||||
|
|
||||||
### 会议状态信令(4998)
|
### 会议状态信令(4998)
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
package com.acgist.taoyao.signal.client;
|
package com.acgist.taoyao.signal.client;
|
||||||
|
|
||||||
import com.acgist.taoyao.boot.model.Message;
|
import com.acgist.taoyao.boot.model.Message;
|
||||||
import com.acgist.taoyao.signal.media.ClientMediaPublisher;
|
|
||||||
import com.acgist.taoyao.signal.media.ClientMediaSubscriber;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 终端会话
|
* 终端会话
|
||||||
@@ -23,16 +21,6 @@ public interface ClientSession extends AutoCloseable {
|
|||||||
*/
|
*/
|
||||||
ClientSessionStatus status();
|
ClientSessionStatus status();
|
||||||
|
|
||||||
/**
|
|
||||||
* @return 终端媒体发布者
|
|
||||||
*/
|
|
||||||
ClientMediaPublisher publisher();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return 终端媒体订阅者
|
|
||||||
*/
|
|
||||||
ClientMediaSubscriber subscriber();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 推送消息
|
* 推送消息
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -2,9 +2,6 @@ package com.acgist.taoyao.signal.client;
|
|||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import com.acgist.taoyao.signal.media.ClientMediaPublisher;
|
|
||||||
import com.acgist.taoyao.signal.media.ClientMediaSubscriber;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 会话适配器
|
* 会话适配器
|
||||||
*
|
*
|
||||||
@@ -32,22 +29,12 @@ public abstract class ClientSessionAdapter<T extends AutoCloseable> implements C
|
|||||||
* 终端状态
|
* 终端状态
|
||||||
*/
|
*/
|
||||||
protected ClientSessionStatus status;
|
protected ClientSessionStatus status;
|
||||||
/**
|
|
||||||
* 终端媒体发布者
|
|
||||||
*/
|
|
||||||
protected ClientMediaPublisher publisher;
|
|
||||||
/**
|
|
||||||
* 终端媒体订阅者
|
|
||||||
*/
|
|
||||||
protected ClientMediaSubscriber subscriber;
|
|
||||||
|
|
||||||
protected ClientSessionAdapter(T instance) {
|
protected ClientSessionAdapter(T instance) {
|
||||||
this.time = System.currentTimeMillis();
|
this.time = System.currentTimeMillis();
|
||||||
this.instance = instance;
|
this.instance = instance;
|
||||||
this.authorized = false;
|
this.authorized = false;
|
||||||
this.status = new ClientSessionStatus();
|
this.status = new ClientSessionStatus();
|
||||||
this.publisher = new ClientMediaPublisher();
|
|
||||||
this.subscriber = new ClientMediaSubscriber();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -60,16 +47,6 @@ public abstract class ClientSessionAdapter<T extends AutoCloseable> implements C
|
|||||||
return this.status;
|
return this.status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ClientMediaPublisher publisher() {
|
|
||||||
return this.publisher;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ClientMediaSubscriber subscriber() {
|
|
||||||
return this.subscriber;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean timeout(long timeout) {
|
public boolean timeout(long timeout) {
|
||||||
return !this.authorized && System.currentTimeMillis() - this.time > timeout;
|
return !this.authorized && System.currentTimeMillis() - this.time > timeout;
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package com.acgist.taoyao.signal.media;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.acgist.taoyao.signal.media.router.Router;
|
||||||
|
|
||||||
|
public interface RouterManager {
|
||||||
|
|
||||||
|
void bindId();
|
||||||
|
|
||||||
|
List<Router> from();
|
||||||
|
|
||||||
|
List<Router> to();
|
||||||
|
|
||||||
|
void fromRouteTo(String from, String to);
|
||||||
|
|
||||||
|
void fromOrTo(String sn);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package com.acgist.taoyao.signal.media.processor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 媒体处理:混音、美颜等等
|
||||||
|
*
|
||||||
|
* 处理完成发送订阅者
|
||||||
|
*
|
||||||
|
* @author acgist
|
||||||
|
*/
|
||||||
|
public interface Processor {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
package com.acgist.taoyao.signal.media.router;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 终端媒体流路由(推流->拉流)
|
|
||||||
*
|
|
||||||
* @author acgist
|
|
||||||
*/
|
|
||||||
public interface ClientMediaStreamRouter {
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
package com.acgist.taoyao.signal.media.router;
|
|
||||||
|
|
||||||
import com.acgist.taoyao.signal.media.stream.ClientMediaStream;
|
|
||||||
|
|
||||||
public class ClientMediaStreamRouterAdapter {
|
|
||||||
|
|
||||||
ClientMediaStream source;
|
|
||||||
ClientMediaStream target;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package com.acgist.taoyao.signal.media.router;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 直播会议路由绑定
|
||||||
|
*
|
||||||
|
* 发布者->订阅者
|
||||||
|
*
|
||||||
|
* @author acgist
|
||||||
|
*/
|
||||||
|
public interface Router {
|
||||||
|
|
||||||
|
void from();
|
||||||
|
|
||||||
|
void to();
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.acgist.taoyao.signal.media;
|
package com.acgist.taoyao.signal.media.stream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 终端媒体操作
|
* 终端媒体操作
|
||||||
@@ -1,16 +1,16 @@
|
|||||||
package com.acgist.taoyao.signal.media;
|
package com.acgist.taoyao.signal.media.stream;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
import com.acgist.taoyao.signal.media.stream.ClientMediaStream;
|
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 终端媒体流发布者(终端推流)
|
* 终端媒体流发布者(终端推流)
|
||||||
*
|
*
|
||||||
|
* 通过处理器发送给订阅者
|
||||||
|
*
|
||||||
* @author acgist
|
* @author acgist
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@@ -21,7 +21,6 @@ public class ClientMediaPublisher implements ClientMediaHandler {
|
|||||||
*/
|
*/
|
||||||
private Map<String, ClientMediaStream> streams = new ConcurrentHashMap<>();
|
private Map<String, ClientMediaStream> streams = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 发布
|
* 发布
|
||||||
*
|
*
|
||||||
@@ -1,10 +1,8 @@
|
|||||||
package com.acgist.taoyao.signal.media;
|
package com.acgist.taoyao.signal.media.stream;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.CopyOnWriteArrayList;
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
|
|
||||||
import com.acgist.taoyao.signal.media.stream.ClientMediaStream;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 终端媒体订阅者(终端拉流)
|
* 终端媒体订阅者(终端拉流)
|
||||||
*
|
*
|
||||||
Reference in New Issue
Block a user