From c380ea294d1accfe7b5ae9da0dbf98408cceb4a6 Mon Sep 17 00:00:00 2001 From: acgist <289547414@qq.com> Date: Thu, 5 Oct 2023 08:15:25 +0800 Subject: [PATCH] =?UTF-8?q?[*]=20=E6=97=A5=E5=B8=B8=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/TODO.md | 1 + taoyao-client-media/src/Taoyao.js | 24 +++++----- taoyao-client-web/src/components/Taoyao.js | 48 ++++++++++--------- .../MediaConsumerRequestKeyFrameProtocol.java | 3 +- ...diaConsumerSetPreferredLayersProtocol.java | 2 +- 5 files changed, 42 insertions(+), 36 deletions(-) diff --git a/docs/TODO.md b/docs/TODO.md index 4d99d80..467c0d5 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -38,5 +38,6 @@ * 安卓关闭视频没有删除预览 * 浏览器WebRTC监控页面关闭:`chrome://webrtc-internals/` * me -> this +* console -> platformError ## 完成任务 diff --git a/taoyao-client-media/src/Taoyao.js b/taoyao-client-media/src/Taoyao.js index 2eedaa6..00fc0a6 100644 --- a/taoyao-client-media/src/Taoyao.js +++ b/taoyao-client-media/src/Taoyao.js @@ -999,21 +999,23 @@ class Taoyao { /** * 请求关键帧信令 * - * @param {*} message 消息 + * @param {*} message 信令消息 * @param {*} body 消息主体 */ async mediaConsumerRequestKeyFrame(message, body) { - const me = this; - const { roomId, consumerId } = body; - const room = me.rooms.get(roomId); + const { + roomId, + consumerId + } = body; + const room = this.rooms.get(roomId); const consumer = room?.consumers.get(consumerId); - if(consumer) { - console.debug("请求关键帧", consumerId); - // 通过trace事件监听关键帧的信息 - await consumer.requestKeyFrame(); - } else { - console.debug("请求关键帧(无效)", consumerId); + if(!consumer) { + console.debug("请求关键帧(消费者无效)", roomId, consumerId); + return; } + console.debug("请求关键帧", consumerId); + // 通过trace事件监听关键帧的信息 + await consumer.requestKeyFrame(); } /** @@ -1030,7 +1032,7 @@ class Taoyao { const room = this.rooms.get(roomId); const consumer = room?.consumers.get(consumerId); if(!consumer) { - console.warn("恢复消费者(消费者无效)", consumerId); + console.warn("恢复消费者(消费者无效)", roomId, consumerId); return; } consumer.localPaused = false; diff --git a/taoyao-client-web/src/components/Taoyao.js b/taoyao-client-web/src/components/Taoyao.js index 17a2c33..aaa5cad 100644 --- a/taoyao-client-web/src/components/Taoyao.js +++ b/taoyao-client-web/src/components/Taoyao.js @@ -1578,28 +1578,6 @@ class Taoyao extends RemoteClient { } } - /** - * 请求关键帧信令 - * - * @param {*} consumerId 消费者ID - */ - mediaConsumerRequestKeyFrame(consumerId) { - const me = this; - const consumer = me.consumers.get(consumerId); - if(!consumer) { - me.platformError("消费者无效"); - return; - } - if(consumer.kind !== "video") { - me.platformError("只能请求视频消费者"); - return; - } - me.push(protocol.buildMessage("media::consumer::request::key::frame", { - roomId : me.roomId, - consumerId: consumerId, - })); - } - /** * 消费媒体信令 * @@ -1706,6 +1684,27 @@ class Taoyao extends RemoteClient { } } + /** + * 请求关键帧信令 + * + * @param {*} consumerId 消费者ID + */ + mediaConsumerRequestKeyFrame(consumerId) { + const consumer = this.consumers.get(consumerId); + if(!consumer) { + this.platformError("消费者无效"); + return; + } + if(consumer.kind !== "video") { + this.platformError("只能请求视频消费者"); + return; + } + this.push(protocol.buildMessage("media::consumer::request::key::frame", { + consumerId, + roomId: this.roomId, + })); + } + /** * 恢复消费者信令 * @@ -2724,7 +2723,10 @@ class Taoyao extends RemoteClient { if(message instanceof Object) { callbackMessage = message; } else { - callbackMessage = protocol.buildMessage("platform::error", {}); + callbackMessage = protocol.buildMessage("platform::error", { + error, + message, + }); callbackMessage.code = "9999"; callbackMessage.message = message; } diff --git a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaConsumerRequestKeyFrameProtocol.java b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaConsumerRequestKeyFrameProtocol.java index 1ae18ab..931a9c5 100644 --- a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaConsumerRequestKeyFrameProtocol.java +++ b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaConsumerRequestKeyFrameProtocol.java @@ -13,7 +13,8 @@ import com.acgist.taoyao.signal.protocol.ProtocolRoomAdapter; /** * 请求关键帧信令 - * 注意:视频才有 + * + * 注意:视频消费者才有 * * @author acgist */ diff --git a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaConsumerSetPreferredLayersProtocol.java b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaConsumerSetPreferredLayersProtocol.java index f45bd80..83d0e88 100644 --- a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaConsumerSetPreferredLayersProtocol.java +++ b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaConsumerSetPreferredLayersProtocol.java @@ -18,7 +18,7 @@ import com.acgist.taoyao.signal.protocol.ProtocolRoomAdapter; * * 码率:数据大小和时间的比值 * - * 注意:只有Simulcast和SVC消费者有效 + * 注意:只有Simulcast和SVC视频消费者有效 * * @author acgist */