[*] 复用factory

This commit is contained in:
acgist
2023-04-18 08:49:49 +08:00
parent 08b86b5702
commit 2508ab6973
11 changed files with 50 additions and 18 deletions

View File

@@ -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;

View File

@@ -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">
</GridLayout>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/settings"

View File

@@ -14,6 +14,7 @@ namespace acgist {
class Room : public RouterCallback {
public:
std::string roomId;
webrtc::PeerConnectionFactoryInterface* factory;
mediasoupclient::Device* device;
mediasoupclient::PeerConnection* peerConnection;
mediasoupclient::SendTransport* sendTransport;

View File

@@ -160,6 +160,7 @@ namespace acgist {
webrtc::PeerConnectionFactoryInterface* factory,
webrtc::PeerConnectionInterface::RTCConfiguration& rtcConfiguration
) {
this->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
);
}

View File

@@ -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;

View File

@@ -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 {
}

View File

@@ -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;

View File

@@ -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,

View File

@@ -30,6 +30,6 @@ public class Config {
/**
* 默认声音大小
*/
public static final double DEFAULT_VOLUME = 100.0D;
public static final double DEFAULT_VOLUME = 10.0D;
}