[*] 日常优化
This commit is contained in:
@@ -638,9 +638,7 @@ public final class Taoyao implements ITaoyao {
|
|||||||
case "media::consume" -> this.mediaConsume(message, message.body());
|
case "media::consume" -> this.mediaConsume(message, message.body());
|
||||||
case "media::consumer::close" -> this.mediaConsumerClose(message, message.body());
|
case "media::consumer::close" -> this.mediaConsumerClose(message, message.body());
|
||||||
case "media::consumer::pause" -> this.mediaConsumerPause(message, message.body());
|
case "media::consumer::pause" -> this.mediaConsumerPause(message, message.body());
|
||||||
case "media::consumer::request::key::frame" -> this.mediaConsumerRequestKeyFrame(message, message.body());
|
|
||||||
case "media::consumer::resume" -> this.mediaConsumerResume(message, message.body());
|
case "media::consumer::resume" -> this.mediaConsumerResume(message, message.body());
|
||||||
case "media::consumer::set::preferred::layers" -> this.mediaConsumerSetPreferredLayers(message, message.body());
|
|
||||||
case "media::consumer::status" -> this.mediaConsumerStatus(message, message.body());
|
case "media::consumer::status" -> this.mediaConsumerStatus(message, message.body());
|
||||||
case "media::producer::close" -> this.mediaProducerClose(message, message.body());
|
case "media::producer::close" -> this.mediaProducerClose(message, message.body());
|
||||||
case "media::producer::pause" -> this.mediaProducerPause(message, message.body());
|
case "media::producer::pause" -> this.mediaProducerPause(message, message.body());
|
||||||
@@ -868,16 +866,6 @@ public final class Taoyao implements ITaoyao {
|
|||||||
room.mediaConsumerPause(body);
|
room.mediaConsumerPause(body);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 请求关键帧信令
|
|
||||||
*
|
|
||||||
* @param message 信令消息
|
|
||||||
* @param body 信令主体
|
|
||||||
*/
|
|
||||||
private void mediaConsumerRequestKeyFrame(Message message, Map<String, Object> body) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 恢复消费者信令
|
* 恢复消费者信令
|
||||||
*
|
*
|
||||||
@@ -894,16 +882,6 @@ public final class Taoyao implements ITaoyao {
|
|||||||
room.mediaConsumerResume(body);
|
room.mediaConsumerResume(body);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改最佳空间层和时间层信令
|
|
||||||
*
|
|
||||||
* @param message 信令消息
|
|
||||||
* @param body 信令主体
|
|
||||||
*/
|
|
||||||
private void mediaConsumerSetPreferredLayers(Message message, Map<String, Object> body) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询消费者状态信令
|
* 查询消费者状态信令
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ const os = require("os");
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 桃夭媒体服务地址
|
* 桃夭媒体服务地址
|
||||||
|
* 注意:这里即使是本机也不能配置127.0.0.1
|
||||||
*/
|
*/
|
||||||
const defaultTaoyaoHost = "192.168.1.110";
|
const defaultTaoyaoHost = "192.168.1.110";
|
||||||
|
|
||||||
|
|||||||
@@ -803,15 +803,9 @@ class Taoyao extends RemoteClient {
|
|||||||
case "media::consumer::pause":
|
case "media::consumer::pause":
|
||||||
this.defaultMediaConsumerPause(message);
|
this.defaultMediaConsumerPause(message);
|
||||||
break;
|
break;
|
||||||
case "media::consumer::request::key::frame":
|
|
||||||
me.defaultMediaConsumerRequestKeyFrame(message);
|
|
||||||
break;
|
|
||||||
case "media::consumer::resume":
|
case "media::consumer::resume":
|
||||||
this.defaultMediaConsumerResume(message);
|
this.defaultMediaConsumerResume(message);
|
||||||
break;
|
break;
|
||||||
case "media::consumer::set::preferred::layers":
|
|
||||||
me.defaultMediaConsumerSetPreferredLayers(message);
|
|
||||||
break;
|
|
||||||
case "media::consumer::status":
|
case "media::consumer::status":
|
||||||
this.defaultMediaConsumerStatus(message);
|
this.defaultMediaConsumerStatus(message);
|
||||||
break;
|
break;
|
||||||
@@ -1129,10 +1123,6 @@ class Taoyao extends RemoteClient {
|
|||||||
*/
|
*/
|
||||||
controlServerRecord(clientId, enabled) {
|
controlServerRecord(clientId, enabled) {
|
||||||
const me = this;
|
const me = this;
|
||||||
if(!me.roomId) {
|
|
||||||
me.callbackError("没有进入房间");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
me.push(protocol.buildMessage("control::server::record", {
|
me.push(protocol.buildMessage("control::server::record", {
|
||||||
to : clientId,
|
to : clientId,
|
||||||
roomId : me.roomId,
|
roomId : me.roomId,
|
||||||
@@ -1175,10 +1165,6 @@ class Taoyao extends RemoteClient {
|
|||||||
*/
|
*/
|
||||||
mediaConsumerClose(consumerId) {
|
mediaConsumerClose(consumerId) {
|
||||||
const me = this;
|
const me = this;
|
||||||
if(!me.roomId) {
|
|
||||||
me.callbackError("没有进入房间");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
me.push(protocol.buildMessage("media::consumer::close", {
|
me.push(protocol.buildMessage("media::consumer::close", {
|
||||||
roomId : me.roomId,
|
roomId : me.roomId,
|
||||||
consumerId: consumerId,
|
consumerId: consumerId,
|
||||||
@@ -1210,10 +1196,6 @@ class Taoyao extends RemoteClient {
|
|||||||
*/
|
*/
|
||||||
mediaConsumerPause(consumerId) {
|
mediaConsumerPause(consumerId) {
|
||||||
const me = this;
|
const me = this;
|
||||||
if(!me.roomId) {
|
|
||||||
me.callbackError("没有进入房间");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const consumer = me.consumers.get(consumerId);
|
const consumer = me.consumers.get(consumerId);
|
||||||
if(consumer) {
|
if(consumer) {
|
||||||
if(consumer.paused) {
|
if(consumer.paused) {
|
||||||
@@ -1246,10 +1228,8 @@ class Taoyao extends RemoteClient {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO:continue
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 请求关键帧
|
* 请求关键帧信令
|
||||||
*
|
*
|
||||||
* @param {*} consumerId 消费者ID
|
* @param {*} consumerId 消费者ID
|
||||||
*/
|
*/
|
||||||
@@ -1257,11 +1237,11 @@ class Taoyao extends RemoteClient {
|
|||||||
const me = this;
|
const me = this;
|
||||||
const consumer = me.consumers.get(consumerId);
|
const consumer = me.consumers.get(consumerId);
|
||||||
if(!consumer) {
|
if(!consumer) {
|
||||||
me.callbackError("消费者无效:" + consumerId);
|
me.callbackError("请求关键帧消费者无效");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(consumer.kind !== "video") {
|
if(consumer.kind !== "video") {
|
||||||
me.callbackError("消费者不是视频媒体:" + consumerId);
|
me.callbackError("只能请求视频消费者关键帧");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
me.push(protocol.buildMessage("media::consumer::request::key::frame", {
|
me.push(protocol.buildMessage("media::consumer::request::key::frame", {
|
||||||
@@ -1269,16 +1249,9 @@ class Taoyao extends RemoteClient {
|
|||||||
consumerId: consumerId,
|
consumerId: consumerId,
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 请求关键帧信令
|
* 恢复消费者信令
|
||||||
*
|
|
||||||
* @param {*} message 消息
|
|
||||||
*/
|
|
||||||
defaultMediaConsumerRequestKeyFrame(message) {
|
|
||||||
console.debug("defaultMediaConsumerRequestKeyFrame:", message);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 恢复消费者
|
|
||||||
*
|
*
|
||||||
* @param {*} consumerId 消费者ID
|
* @param {*} consumerId 消费者ID
|
||||||
*/
|
*/
|
||||||
@@ -1289,33 +1262,34 @@ class Taoyao extends RemoteClient {
|
|||||||
if(!consumer.paused) {
|
if(!consumer.paused) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
console.debug("mediaConsumerResume:", consumerId);
|
console.debug("恢复消费者", consumerId);
|
||||||
me.push(protocol.buildMessage("media::consumer::resume", {
|
me.push(protocol.buildMessage("media::consumer::resume", {
|
||||||
roomId : me.roomId,
|
roomId : me.roomId,
|
||||||
consumerId: consumerId,
|
consumerId: consumerId,
|
||||||
}));
|
}));
|
||||||
} else {
|
} else {
|
||||||
console.debug("mediaConsumerResume non:", consumerId);
|
console.debug("恢复消费者无效", consumerId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 恢复消费者信令
|
* 恢复消费者信令
|
||||||
*
|
*
|
||||||
* @param {*} message 消息
|
* @param {*} message 信令消息
|
||||||
*/
|
*/
|
||||||
defaultMediaConsumerResume(message) {
|
defaultMediaConsumerResume(message) {
|
||||||
const me = this;
|
const me = this;
|
||||||
const { roomId, consumerId } = message.body;
|
const { roomId, consumerId } = message.body;
|
||||||
const consumer = me.consumers.get(consumerId);
|
const consumer = me.consumers.get(consumerId);
|
||||||
if (consumer) {
|
if (consumer) {
|
||||||
console.debug("恢复消费者:", consumerId);
|
console.debug("恢复消费者", consumerId);
|
||||||
consumer.resume();
|
consumer.resume();
|
||||||
} else {
|
} else {
|
||||||
console.debug("恢复消费者无效:", consumerId);
|
console.debug("恢复消费者无效", consumerId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 修改最佳空间层和时间层
|
* 修改最佳空间层和时间层信令
|
||||||
*
|
*
|
||||||
* @param {*} consumerId 消费者ID
|
* @param {*} consumerId 消费者ID
|
||||||
* @param {*} spatialLayer 空间层
|
* @param {*} spatialLayer 空间层
|
||||||
@@ -1325,11 +1299,11 @@ class Taoyao extends RemoteClient {
|
|||||||
const me = this;
|
const me = this;
|
||||||
const consumer = me.consumers.get(consumerId);
|
const consumer = me.consumers.get(consumerId);
|
||||||
if(!consumer) {
|
if(!consumer) {
|
||||||
me.callbackError("消费者无效:" + consumerId);
|
me.callbackError("修改最佳空间层和时间层消费者无效");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(consumer.kind !== "video") {
|
if(consumer.kind !== "video") {
|
||||||
me.callbackError("消费者不是视频媒体:" + consumerId);
|
me.callbackError("只能修改视频消费者最佳空间层和时间层");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
me.push(protocol.buildMessage("media::consumer::set::preferred::layers", {
|
me.push(protocol.buildMessage("media::consumer::set::preferred::layers", {
|
||||||
@@ -1339,91 +1313,95 @@ class Taoyao extends RemoteClient {
|
|||||||
temporalLayer,
|
temporalLayer,
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* 修改最佳空间层和时间层信令
|
|
||||||
*
|
|
||||||
* @param {*} message 消息
|
|
||||||
*/
|
|
||||||
defaultMediaConsumerSetPreferredLayers(message) {
|
|
||||||
console.debug("defaultMediaConsumerSetPreferredLayers:", message);
|
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
* 查询消费者状态信令
|
* 查询消费者状态信令
|
||||||
*
|
*
|
||||||
* @param {*} message 消息
|
* @param {*} message 消息
|
||||||
*/
|
*/
|
||||||
defaultMediaConsumerStatus(message) {
|
defaultMediaConsumerStatus(message) {
|
||||||
console.info("defaultMediaConsumerStatus:", message);
|
console.debug("消费者状态", message);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 关闭数据消费者信令
|
* 关闭数据消费者信令
|
||||||
*
|
*
|
||||||
* @param {*} message 消息
|
* @param {*} message 信令消息
|
||||||
*/
|
*/
|
||||||
defaultMediaDataConsumerClose(message) {
|
defaultMediaDataConsumerClose(message) {
|
||||||
const me = this;
|
const me = this;
|
||||||
const { roomId, consumerId } = message.body;
|
const { roomId, consumerId } = message.body;
|
||||||
const dataConsumer = me.dataConsumers.get(consumerId);
|
const dataConsumer = me.dataConsumers.get(consumerId);
|
||||||
if (dataConsumer) {
|
if (dataConsumer) {
|
||||||
console.info("关闭数据消费者:", consumerId);
|
console.debug("关闭数据消费者", consumerId);
|
||||||
dataConsumer.close();
|
dataConsumer.close();
|
||||||
me.dataConsumers.delete(consumerId);
|
me.dataConsumers.delete(consumerId);
|
||||||
} else {
|
} else {
|
||||||
console.debug("关闭数据消费者无效:", consumerId);
|
console.debug("关闭数据消费者无效", consumerId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询数据消费者状态信令
|
* 查询数据消费者状态信令
|
||||||
*
|
*
|
||||||
* @param {*} message 消息
|
* @param {*} message 信令消息
|
||||||
*/
|
*/
|
||||||
defaultMediaDataConsumerStatus(message) {
|
defaultMediaDataConsumerStatus(message) {
|
||||||
console.info("defaultMediaDataConsumerStatus:", message);
|
console.debug("数据消费者状态", message);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 关闭数据生产者信令
|
* 关闭数据生产者信令
|
||||||
*
|
*
|
||||||
* @param {*} message 消息
|
* @param {*} message 信令消息
|
||||||
*/
|
*/
|
||||||
defaultMediaDataProducerClose(message) {
|
defaultMediaDataProducerClose(message) {
|
||||||
const me = this;
|
const me = this;
|
||||||
const { roomId, producerId } = message.body;
|
const { roomId, producerId } = message.body;
|
||||||
const producer = me.dataProducer;
|
const producer = me.getProducer(producerId);
|
||||||
if (producer) {
|
if (producer) {
|
||||||
console.debug("关闭数据生产者:", producerId);
|
console.debug("关闭数据生产者", producerId);
|
||||||
producer.close();
|
producer.close();
|
||||||
// TODO:类型判断设置为空
|
me.dataProducer = null;
|
||||||
} else {
|
} else {
|
||||||
console.debug("关闭数据生产者无效:", producerId);
|
console.debug("关闭数据生产者无效", producerId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 关闭数据消费者信令
|
* 关闭数据消费者信令
|
||||||
*
|
*
|
||||||
* @param {*} message 消息
|
* @param {*} message 消息
|
||||||
*/
|
*/
|
||||||
defaultMediaDataProducerStatus(message) {
|
defaultMediaDataProducerStatus(message) {
|
||||||
console.info("defaultMediaDataProducerStatus:", message);
|
console.info("数据生产者状态", message);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 关闭生产者信令
|
* 关闭生产者信令
|
||||||
*
|
*
|
||||||
* @param {*} message 消息
|
* @param {*} message 信令消息
|
||||||
*/
|
*/
|
||||||
async defaultMediaProducerClose(message) {
|
async defaultMediaProducerClose(message) {
|
||||||
const me = this;
|
const me = this;
|
||||||
const { roomId, producerId } = message.body;
|
const { roomId, producerId } = message.body;
|
||||||
const producer = me.getProducer(producerId);
|
const producer = me.getProducer(producerId);
|
||||||
if (producer) {
|
if (producer) {
|
||||||
console.debug("关闭生产者:", producerId);
|
console.debug("关闭生产者", producerId);
|
||||||
producer.close();
|
producer.close();
|
||||||
// TODO:类型判断设置为空
|
if(producer.kind === "audio") {
|
||||||
|
me.audioProducer = null;
|
||||||
|
} else if(producer.kind === "video") {
|
||||||
|
me.videoProducer = null;
|
||||||
} else {
|
} else {
|
||||||
console.debug("关闭生产者无效:", producerId);
|
}
|
||||||
|
} else {
|
||||||
|
console.debug("关闭生产者无效", producerId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 暂停生产者
|
* 暂停生产者信令
|
||||||
*
|
*
|
||||||
* @param {*} producerId 生产者ID
|
* @param {*} producerId 生产者ID
|
||||||
*/
|
*/
|
||||||
@@ -1434,15 +1412,16 @@ class Taoyao extends RemoteClient {
|
|||||||
if(producer.paused) {
|
if(producer.paused) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
console.debug("mediaProducerPause:", producerId);
|
console.debug("暂停生产者", producerId);
|
||||||
me.push(protocol.buildMessage("media::producer::pause", {
|
me.push(protocol.buildMessage("media::producer::pause", {
|
||||||
roomId : me.roomId,
|
roomId : me.roomId,
|
||||||
producerId: producerId,
|
producerId: producerId,
|
||||||
}));
|
}));
|
||||||
} else {
|
} else {
|
||||||
console.debug("mediaProducerPause non:", producerId);
|
console.debug("暂停生产者无效", producerId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 暂停生产者信令
|
* 暂停生产者信令
|
||||||
*
|
*
|
||||||
@@ -1453,14 +1432,15 @@ class Taoyao extends RemoteClient {
|
|||||||
const { roomId, producerId } = message.body;
|
const { roomId, producerId } = message.body;
|
||||||
const producer = me.getProducer(producerId);
|
const producer = me.getProducer(producerId);
|
||||||
if (producer) {
|
if (producer) {
|
||||||
console.debug("暂停生产者:", producerId);
|
console.debug("暂停生产者", producerId);
|
||||||
producer.pause();
|
producer.pause();
|
||||||
} else {
|
} else {
|
||||||
console.debug("暂停生产者无效:", producerId);
|
console.debug("暂停生产者无效", producerId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 恢复生产者
|
* 恢复生产者信令
|
||||||
*
|
*
|
||||||
* @param {*} producerId 生产者ID
|
* @param {*} producerId 生产者ID
|
||||||
*/
|
*/
|
||||||
@@ -1471,65 +1451,71 @@ class Taoyao extends RemoteClient {
|
|||||||
if(!producer.paused) {
|
if(!producer.paused) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
console.debug("mediaProducerResume:", producerId);
|
console.debug("恢复生产者", producerId);
|
||||||
me.push(protocol.buildMessage("media::producer::resume", {
|
me.push(protocol.buildMessage("media::producer::resume", {
|
||||||
roomId : me.roomId,
|
roomId : me.roomId,
|
||||||
producerId: producerId,
|
producerId: producerId,
|
||||||
}));
|
}));
|
||||||
} else {
|
} else {
|
||||||
console.debug("mediaProducerResume non:", producerId);
|
console.debug("恢复生产者无效", producerId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 恢复生产者信令
|
* 恢复生产者信令
|
||||||
*
|
*
|
||||||
* @param {*} message 消息
|
* @param {*} message 信令消息
|
||||||
*/
|
*/
|
||||||
async defaultMediaProducerResume(message) {
|
async defaultMediaProducerResume(message) {
|
||||||
const me = this;
|
const me = this;
|
||||||
const { roomId, producerId } = message.body;
|
const { roomId, producerId } = message.body;
|
||||||
const producer = me.getProducer(producerId);
|
const producer = me.getProducer(producerId);
|
||||||
if (producer) {
|
if (producer) {
|
||||||
console.debug("恢复生产者:", producerId);
|
console.debug("恢复生产者", producerId);
|
||||||
producer.resume();
|
producer.resume();
|
||||||
} else {
|
} else {
|
||||||
console.debug("恢复生产者无效:", producerId);
|
console.debug("恢复生产者无效", producerId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 重启ICE
|
* 重启ICE信令
|
||||||
*/
|
*/
|
||||||
async mediaIceRestart() {
|
async mediaIceRestart() {
|
||||||
const me = this;
|
const me = this;
|
||||||
if (me.sendTransport) {
|
if (me.sendTransport) {
|
||||||
const response = await me.request(protocol.buildMessage(
|
const response = await me.request(protocol.buildMessage('media::ice::restart', {
|
||||||
'media::ice::restart',
|
transportId: me.sendTransport.id
|
||||||
{ transportId: me.sendTransport.id }
|
}));
|
||||||
));
|
|
||||||
const { iceParameters } = response.body;
|
const { iceParameters } = response.body;
|
||||||
await me.sendTransport.restartIce({ iceParameters });
|
await me.sendTransport.restartIce({ iceParameters });
|
||||||
}
|
}
|
||||||
if (me.recvTransport)
|
if (me.recvTransport) {
|
||||||
{
|
const response = await me.request(protocol.buildMessage('media::ice::restart', {
|
||||||
const response = await me.request(protocol.buildMessage(
|
transportId: me.recvTransport.id
|
||||||
'media::ice::restart',
|
}));
|
||||||
{ transportId: me.recvTransport.id }
|
|
||||||
));
|
|
||||||
const { iceParameters } = response;
|
const { iceParameters } = response;
|
||||||
await me.recvTransport.restartIce({ iceParameters });
|
await me.recvTransport.restartIce({ iceParameters });
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 视频方向变化信令
|
* 视频方向变化信令
|
||||||
*
|
*
|
||||||
* @param {*} message 消息
|
* @param {*} message 信令消息
|
||||||
*/
|
*/
|
||||||
defaultMediaVideoOrientationChange(message) {
|
defaultMediaVideoOrientationChange(message) {
|
||||||
console.debug("视频方向变化信令:", message);
|
console.debug("视频方向变化信令", message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO:continue
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 消费媒体信令
|
* 消费媒体信令
|
||||||
|
* 如果需要加密:consumer.rtpReceiver
|
||||||
|
* const receiverStreams = receiver.createEncodedStreams();
|
||||||
|
* const readableStream = receiverStreams.readable || receiverStreams.readableStream;
|
||||||
|
* const writableStream = receiverStreams.writable || receiverStreams.writableStream;
|
||||||
*
|
*
|
||||||
* @param {*} message 消息
|
* @param {*} message 消息
|
||||||
*/
|
*/
|
||||||
@@ -1824,10 +1810,6 @@ class Taoyao extends RemoteClient {
|
|||||||
*/
|
*/
|
||||||
roomExpel(clientId) {
|
roomExpel(clientId) {
|
||||||
const me = this;
|
const me = this;
|
||||||
if(!me.roomId) {
|
|
||||||
this.callbackError("没有进入房间");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
me.push(protocol.buildMessage("room::expel", {
|
me.push(protocol.buildMessage("room::expel", {
|
||||||
roomId: this.roomId,
|
roomId: this.roomId,
|
||||||
clientId,
|
clientId,
|
||||||
@@ -1849,10 +1831,6 @@ class Taoyao extends RemoteClient {
|
|||||||
*/
|
*/
|
||||||
roomInvite(clientId) {
|
roomInvite(clientId) {
|
||||||
const me = this;
|
const me = this;
|
||||||
if(!me.roomId) {
|
|
||||||
this.callbackError("没有进入房间");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
me.push(protocol.buildMessage("room::invite", {
|
me.push(protocol.buildMessage("room::invite", {
|
||||||
roomId: this.roomId,
|
roomId: this.roomId,
|
||||||
clientId,
|
clientId,
|
||||||
@@ -1964,6 +1942,10 @@ class Taoyao extends RemoteClient {
|
|||||||
/************************ 媒体 ************************/
|
/************************ 媒体 ************************/
|
||||||
/**
|
/**
|
||||||
* 生产媒体
|
* 生产媒体
|
||||||
|
* 如果需要加密:producer.rtpSender
|
||||||
|
* const senderStreams = sender.createEncodedStreams();
|
||||||
|
* const readableStream = senderStreams.readable || senderStreams.readableStream;
|
||||||
|
* const writableStream = senderStreams.writable || senderStreams.writableStream;
|
||||||
*
|
*
|
||||||
* TODO:优先使用外部传入数据
|
* TODO:优先使用外部传入数据
|
||||||
*/
|
*/
|
||||||
@@ -2005,6 +1987,7 @@ class Taoyao extends RemoteClient {
|
|||||||
} = response.body;
|
} = response.body;
|
||||||
self.sendTransport = self.mediasoupDevice.createSendTransport({
|
self.sendTransport = self.mediasoupDevice.createSendTransport({
|
||||||
id: transportId,
|
id: transportId,
|
||||||
|
iceServers: [],
|
||||||
iceCandidates,
|
iceCandidates,
|
||||||
iceParameters,
|
iceParameters,
|
||||||
dtlsParameters: {
|
dtlsParameters: {
|
||||||
@@ -2012,16 +1995,9 @@ class Taoyao extends RemoteClient {
|
|||||||
role: "auto",
|
role: "auto",
|
||||||
},
|
},
|
||||||
sctpParameters,
|
sctpParameters,
|
||||||
// TODO:iceservers
|
|
||||||
iceServers: [],
|
|
||||||
// Google配置
|
|
||||||
proprietaryConstraints: {
|
proprietaryConstraints: {
|
||||||
optional: [{ googDscp: true }],
|
optional: [{ googDscp: true }],
|
||||||
},
|
},
|
||||||
additionalSettings: {
|
|
||||||
// TODO:加密解密
|
|
||||||
encodedInsertableStreams: false
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
self.sendTransport.on(
|
self.sendTransport.on(
|
||||||
"connect",
|
"connect",
|
||||||
@@ -2100,6 +2076,7 @@ class Taoyao extends RemoteClient {
|
|||||||
} = response.body;
|
} = response.body;
|
||||||
self.recvTransport = self.mediasoupDevice.createRecvTransport({
|
self.recvTransport = self.mediasoupDevice.createRecvTransport({
|
||||||
id: transportId,
|
id: transportId,
|
||||||
|
iceServers: [],
|
||||||
iceCandidates,
|
iceCandidates,
|
||||||
iceParameters,
|
iceParameters,
|
||||||
dtlsParameters: {
|
dtlsParameters: {
|
||||||
@@ -2107,10 +2084,8 @@ class Taoyao extends RemoteClient {
|
|||||||
role: "auto",
|
role: "auto",
|
||||||
},
|
},
|
||||||
sctpParameters,
|
sctpParameters,
|
||||||
iceServers: [],
|
proprietaryConstraints: {
|
||||||
additionalSettings: {
|
optional: [{ googDscp: true }],
|
||||||
// TODO:加密解密
|
|
||||||
encodedInsertableStreams: false,
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
self.recvTransport.on(
|
self.recvTransport.on(
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import com.acgist.taoyao.boot.annotation.Description;
|
|||||||
import com.acgist.taoyao.boot.annotation.Protocol;
|
import com.acgist.taoyao.boot.annotation.Protocol;
|
||||||
import com.acgist.taoyao.boot.config.Constant;
|
import com.acgist.taoyao.boot.config.Constant;
|
||||||
import com.acgist.taoyao.boot.model.Message;
|
import com.acgist.taoyao.boot.model.Message;
|
||||||
import com.acgist.taoyao.boot.utils.MapUtils;
|
|
||||||
import com.acgist.taoyao.signal.client.Client;
|
import com.acgist.taoyao.signal.client.Client;
|
||||||
import com.acgist.taoyao.signal.client.ClientType;
|
import com.acgist.taoyao.signal.client.ClientType;
|
||||||
import com.acgist.taoyao.signal.party.media.Room;
|
import com.acgist.taoyao.signal.party.media.Room;
|
||||||
@@ -41,9 +40,6 @@ public class MediaConsumerRequestKeyFrameProtocol extends ProtocolRoomAdapter {
|
|||||||
if(clientType.mediaClient()) {
|
if(clientType.mediaClient()) {
|
||||||
body.put(Constant.CLIENT_ID, clientId);
|
body.put(Constant.CLIENT_ID, clientId);
|
||||||
mediaClient.push(message);
|
mediaClient.push(message);
|
||||||
} else if(clientType.mediaServer()) {
|
|
||||||
final String requestClientId = MapUtils.remove(body, Constant.CLIENT_ID);
|
|
||||||
room.unicast(requestClientId, message);
|
|
||||||
} else {
|
} else {
|
||||||
this.logNoAdapter(clientType);
|
this.logNoAdapter(clientType);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import com.acgist.taoyao.boot.annotation.Description;
|
|||||||
import com.acgist.taoyao.boot.annotation.Protocol;
|
import com.acgist.taoyao.boot.annotation.Protocol;
|
||||||
import com.acgist.taoyao.boot.config.Constant;
|
import com.acgist.taoyao.boot.config.Constant;
|
||||||
import com.acgist.taoyao.boot.model.Message;
|
import com.acgist.taoyao.boot.model.Message;
|
||||||
import com.acgist.taoyao.boot.utils.MapUtils;
|
|
||||||
import com.acgist.taoyao.signal.client.Client;
|
import com.acgist.taoyao.signal.client.Client;
|
||||||
import com.acgist.taoyao.signal.client.ClientType;
|
import com.acgist.taoyao.signal.client.ClientType;
|
||||||
import com.acgist.taoyao.signal.party.media.Room;
|
import com.acgist.taoyao.signal.party.media.Room;
|
||||||
@@ -49,9 +48,6 @@ public class MediaConsumerSetPreferredLayersProtocol extends ProtocolRoomAdapter
|
|||||||
if(clientType.mediaClient()) {
|
if(clientType.mediaClient()) {
|
||||||
body.put(Constant.CLIENT_ID, clientId);
|
body.put(Constant.CLIENT_ID, clientId);
|
||||||
mediaClient.push(message);
|
mediaClient.push(message);
|
||||||
} else if(clientType.mediaServer()) {
|
|
||||||
final String requestClientId = MapUtils.remove(body, Constant.CLIENT_ID);
|
|
||||||
room.unicast(requestClientId, message);
|
|
||||||
} else {
|
} else {
|
||||||
this.logNoAdapter(clientType);
|
this.logNoAdapter(clientType);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user