我正在尝试使用此webRTC Java 本机接口实现在两个 Java 应用程序之间构建对等音频传输,并使用带有套接字的简单 nodejs 服务器来执行信令,尽管无法获取音轨,但我可以建立连接工作,尝试添加轨道,添加收发器,将 audioDeviceModule 传递给 PeerConnectionFactory,但没有任何效果,我只想从呼叫者附加麦克风轨道并让它在另一侧正常播放。
我目前尝试连接音频:
AudioDeviceModule mod = new AudioDeviceModule();
mod.setRecordingDevice(MediaDevices.getAudioCaptureDevices().get(1));
mod.initRecording();
mod.setPlayoutDevice(MediaDevices.getAudioRenderDevices().get(1));
mod.initPlayout();
PeerConnectionFactory factory = new PeerConnectionFactory(mod);
RTCPeerConnection connection = factory.createPeerConnection(config, observer);
AudioOptions audioOptions = new AudioOptions();
AudioSource audioSource = factory.createAudioSource(audioOptions);
AudioTrack audioTrack = factory.createAudioTrack("audioTrack", audioSource);
connection.addTrack(audioTrack, List.of("stream"));
Run Code Online (Sandbox Code Playgroud)
他们的 repo 上提供的演示很复杂,它没有帮助我理解 API,一个简单的“入门”示例会有所帮助。
到目前为止我所拥有的:结构是基本的 我正在运行两个 java 实例,通过套接字从第一个实例向服务器发送报价,服务器将其转发到第二个实例,后者设置远程描述并发送答案到服务器,服务器将其转发给第一个实例,该实例设置远程描述
呼叫者:
connection.createOffer(options, new CreateSessionDescriptionObserver() {
@Override
public void onSuccess(RTCSessionDescription description) {
connection.setLocalDescription(description, new SetSessionDescriptionObserver() {
@Override
public void onSuccess() {
System.out.println("caller ready");
}
@Override …Run Code Online (Sandbox Code Playgroud) 如果您在透明像素上单击或拖动,JavaFx ImageView 不会触发鼠标事件,例如按下或拖动,是否有办法解决此问题并从透明区域检测鼠标事件?
使用名为 view 的 ImageView,我想用鼠标拖动事件移动它,所以我写了这段代码
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class Main extends Application{
double initMx, initMy,initX, initY;
@Override
public void start(Stage ps) throws Exception {
StackPane pane = new StackPane();
Image im = new Image("0.png");
ImageView view = new ImageView(im);
double fact = im.getWidth() / im.getHeight();
view.setFitHeight(300);
view.setFitWidth(300 * fact);
view.setOnMousePressed(e->{
initX = view.getTranslateX();
initY = view.getTranslateY();
initMx = e.getSceneX();
initMy = e.getSceneY();
});
view.setOnMouseDragged(e->{ …Run Code Online (Sandbox Code Playgroud)