From 2508ab6973c1af57080411994d04e0c48c668029 Mon Sep 17 00:00:00 2001 From: acgist <289547414@qq.com> Date: Tue, 18 Apr 2023 08:49:49 +0800 Subject: [PATCH] =?UTF-8?q?[*]=20=E5=A4=8D=E7=94=A8factory?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/Deploy.md | 14 +++++++++++--- .../com/acgist/taoyao/client/MainActivity.java | 6 +++--- .../client/src/main/res/layout/activity_main.xml | 5 +++-- .../taoyao/media/src/main/cpp/include/Room.hpp | 1 + .../taoyao/media/src/main/cpp/webrtc/Room.cpp | 15 +++++++++++---- .../com/acgist/taoyao/media/MediaManager.java | 4 ---- .../acgist/taoyao/media/audio/AudioMixer.java | 16 ++++++++++++++++ .../acgist/taoyao/media/client/RecordClient.java | 1 + .../com/acgist/taoyao/media/client/Room.java | 3 ++- .../com/acgist/taoyao/media/config/Config.java | 2 +- taoyao-client-web/src/components/Taoyao.js | 1 + 11 files changed, 50 insertions(+), 18 deletions(-) create mode 100644 taoyao-client-android/taoyao/media/src/main/java/com/acgist/taoyao/media/audio/AudioMixer.java diff --git a/docs/Deploy.md b/docs/Deploy.md index 26b62a8..dac23d5 100644 --- a/docs/Deploy.md +++ b/docs/Deploy.md @@ -373,23 +373,31 @@ nginx -s reload ## 安装Android终端 ``` -# Android Studio +cd /data/taoyao/taoyao-client-android/taoyao + +# Mac | Linux +sh ./gradlew --no-daemon assembleRelease + +# Windows +./gradlew.bat --no-daemon assembleRelease ``` ## 配置防火墙 ``` -# 终端服务:建议使用Nginx代理 +# Nginx端口 firewall-cmd --zone=public --add-port=443/tcp --permanent +# 终端服务:建议使用Nginx代理 firewall-cmd --zone=public --add-port=8443/tcp --permanent # 信令服务(WebSocket) firewall-cmd --zone=public --add-port=8888/tcp --permanent # 信令服务(Socket):没有启用不用添加规则 firewall-cmd --zone=public --add-port=9999/tcp --permanent -# 媒体服务(数据) +# 媒体服务 firewall-cmd --zone=public --add-port=40000-49999/udp --permanent firewall-cmd --reload +firewall-cmd --list-all firewall-cmd --list-ports # 删除端口 diff --git a/taoyao-client-android/taoyao/client/src/main/java/com/acgist/taoyao/client/MainActivity.java b/taoyao-client-android/taoyao/client/src/main/java/com/acgist/taoyao/client/MainActivity.java index 4679b9d..d6bc5e8 100644 --- a/taoyao-client-android/taoyao/client/src/main/java/com/acgist/taoyao/client/MainActivity.java +++ b/taoyao-client-android/taoyao/client/src/main/java/com/acgist/taoyao/client/MainActivity.java @@ -179,7 +179,7 @@ public class MainActivity extends AppCompatActivity implements Serializable { } this.threadHandler.post(() -> { // 进入房间 - Taoyao.taoyao.roomEnter("1e6707a5-6846-405e-95de-632aa01569aa", null); + Taoyao.taoyao.roomEnter("91f81c0a-0556-4087-b9a4-5889fac36fb6", null); }); } @@ -244,8 +244,8 @@ public class MainActivity extends AppCompatActivity implements Serializable { private void previewVideo(Message message) { final GridLayout video = this.binding.video; final int count = video.getChildCount(); - final GridLayout.Spec rowSpec = GridLayout.spec(count / 2, 1, 0); - final GridLayout.Spec columnSpec = GridLayout.spec(count % 2, 1, 0); + final GridLayout.Spec rowSpec = GridLayout.spec(count / 2, 1.0F); + final GridLayout.Spec columnSpec = GridLayout.spec(count % 2, 1.0F); GridLayout.LayoutParams layoutParams = new GridLayout.LayoutParams(rowSpec, columnSpec); layoutParams.width = 0; layoutParams.height = 0; diff --git a/taoyao-client-android/taoyao/client/src/main/res/layout/activity_main.xml b/taoyao-client-android/taoyao/client/src/main/res/layout/activity_main.xml index 6f2c12d..9bcae2e 100644 --- a/taoyao-client-android/taoyao/client/src/main/res/layout/activity_main.xml +++ b/taoyao-client-android/taoyao/client/src/main/res/layout/activity_main.xml @@ -11,8 +11,9 @@ android:id="@+id/video" android:layout_width="match_parent" android:layout_height="match_parent" - android:columnCount="2" - android:rowCount="2" /> + android:columnCount="2"> + + factory = factory; nlohmann::json json; // TODO:全局 mediasoupclient::PeerConnection::Options options; @@ -174,26 +175,32 @@ namespace acgist { void Room::createSendTransport(JNIEnv* env, std::string body) { nlohmann::json json = nlohmann::json::parse(body); + mediasoupclient::PeerConnection::Options options; + options.factory = this->factory; this->sendTransport = this->device->CreateSendTransport( this->sendListener, json["transportId"], - json["iceCandidates"], json["iceParameters"], + json["iceCandidates"], json["dtlsParameters"], - json["sctpParameters"] + json["sctpParameters"], + &options // TODO:全局options ); } void Room::createRecvTransport(JNIEnv* env, std::string body) { nlohmann::json json = nlohmann::json::parse(body); + mediasoupclient::PeerConnection::Options options; + options.factory = this->factory; this->recvTransport = this->device->CreateRecvTransport( this->recvListener, json["transportId"], - json["iceCandidates"], json["iceParameters"], + json["iceCandidates"], json["dtlsParameters"], - json["sctpParameters"] + json["sctpParameters"], + &options // TODO:全局options ); } diff --git a/taoyao-client-android/taoyao/media/src/main/java/com/acgist/taoyao/media/MediaManager.java b/taoyao-client-android/taoyao/media/src/main/java/com/acgist/taoyao/media/MediaManager.java index a123703..f6b005e 100644 --- a/taoyao-client-android/taoyao/media/src/main/java/com/acgist/taoyao/media/MediaManager.java +++ b/taoyao-client-android/taoyao/media/src/main/java/com/acgist/taoyao/media/MediaManager.java @@ -2,7 +2,6 @@ package com.acgist.taoyao.media; import android.content.Context; import android.content.Intent; -import android.media.AudioRecord; import android.media.MediaCodecInfo; import android.media.MediaCodecList; import android.media.projection.MediaProjection; @@ -42,9 +41,6 @@ import org.webrtc.VideoFrame; import org.webrtc.VideoSource; import org.webrtc.VideoTrack; import org.webrtc.audio.JavaAudioDeviceModule; -import org.webrtc.voiceengine.WebRtcAudioManager; -import org.webrtc.voiceengine.WebRtcAudioRecord; -import org.webrtc.voiceengine.WebRtcAudioUtils; import java.util.Arrays; diff --git a/taoyao-client-android/taoyao/media/src/main/java/com/acgist/taoyao/media/audio/AudioMixer.java b/taoyao-client-android/taoyao/media/src/main/java/com/acgist/taoyao/media/audio/AudioMixer.java new file mode 100644 index 0000000..15aa8a8 --- /dev/null +++ b/taoyao-client-android/taoyao/media/src/main/java/com/acgist/taoyao/media/audio/AudioMixer.java @@ -0,0 +1,16 @@ +package com.acgist.taoyao.media.audio; + +import org.webrtc.voiceengine.WebRtcAudioManager; +import org.webrtc.voiceengine.WebRtcAudioRecord; + +/** + * 混音 + * + * WebRtcAudioTrack#AudioTrackThread :远程音频 + * WebRtcAudioRecord#AudioRecordThread:本地音频 + * + * @author acgist + */ +public class AudioMixer { + +} diff --git a/taoyao-client-android/taoyao/media/src/main/java/com/acgist/taoyao/media/client/RecordClient.java b/taoyao-client-android/taoyao/media/src/main/java/com/acgist/taoyao/media/client/RecordClient.java index 7a5a74e..8507298 100644 --- a/taoyao-client-android/taoyao/media/src/main/java/com/acgist/taoyao/media/client/RecordClient.java +++ b/taoyao-client-android/taoyao/media/src/main/java/com/acgist/taoyao/media/client/RecordClient.java @@ -1,6 +1,7 @@ package com.acgist.taoyao.media.client; import android.media.AudioFormat; +import android.media.AudioManager; import android.media.MediaCodec; import android.media.MediaCodecInfo; import android.media.MediaFormat; diff --git a/taoyao-client-android/taoyao/media/src/main/java/com/acgist/taoyao/media/client/Room.java b/taoyao-client-android/taoyao/media/src/main/java/com/acgist/taoyao/media/client/Room.java index 26cb22d..4742ebe 100644 --- a/taoyao-client-android/taoyao/media/src/main/java/com/acgist/taoyao/media/client/Room.java +++ b/taoyao-client-android/taoyao/media/src/main/java/com/acgist/taoyao/media/client/Room.java @@ -153,7 +153,7 @@ public class Room extends CloseableClient implements RouterCallback { "producing", true, "consuming", false, "sctpCapabilities", this.dataProduce ? this.sctpCapabilities : null - )); + )); if (response == null) { Log.w(Room.class.getSimpleName(), "创建发送通道失败"); return; @@ -164,6 +164,7 @@ public class Room extends CloseableClient implements RouterCallback { private void createRecvTransport() { final Message response = this.taoyao.request(this.taoyao.buildMessage( "media::transport::webrtc::create", + "roomId", this.roomId, "forceTcp", false, "producing", false, "consuming", true, diff --git a/taoyao-client-android/taoyao/media/src/main/java/com/acgist/taoyao/media/config/Config.java b/taoyao-client-android/taoyao/media/src/main/java/com/acgist/taoyao/media/config/Config.java index 96738b8..0353810 100644 --- a/taoyao-client-android/taoyao/media/src/main/java/com/acgist/taoyao/media/config/Config.java +++ b/taoyao-client-android/taoyao/media/src/main/java/com/acgist/taoyao/media/config/Config.java @@ -30,6 +30,6 @@ public class Config { /** * 默认声音大小 */ - public static final double DEFAULT_VOLUME = 100.0D; + public static final double DEFAULT_VOLUME = 10.0D; } diff --git a/taoyao-client-web/src/components/Taoyao.js b/taoyao-client-web/src/components/Taoyao.js index d9bfcc0..f8ff77f 100644 --- a/taoyao-client-web/src/components/Taoyao.js +++ b/taoyao-client-web/src/components/Taoyao.js @@ -1603,6 +1603,7 @@ class Taoyao extends RemoteClient { /** * 解决浏览器的自动播放策略问题 */ + // TODO:完全关闭以后释放资源 { const stream = await navigator.mediaDevices.getUserMedia({ audio: true }); stream.getAudioTracks().forEach((audioTrack) => {