fix: 被控端长时间不动,控制端无输出

This commit is contained in:
2026-07-14 00:49:30 +08:00
parent fc91e6b1f6
commit 65317b2429
2 changed files with 35 additions and 2 deletions

View File

@@ -51,6 +51,11 @@ public class WebRtcClient {
private EglBase eglBase;
private String currentControllerId;
private VideoCapturer videoCapturer;
private int videoWidth;
private int videoHeight;
private int videoFps;
private InputCommandCallback inputCallback;
public interface InputCommandCallback {
@@ -93,6 +98,11 @@ public class WebRtcClient {
}
public void setVideoCapturer(VideoCapturer capturer, int width, int height, int fps) {
this.videoCapturer = capturer;
this.videoWidth = width;
this.videoHeight = height;
this.videoFps = fps;
SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.create("CaptureThread", eglBase.getEglBaseContext());
// 对于屏幕共享isScreencast 设为 true这会优化细节保留
VideoSource videoSource = peerConnectionFactory.createVideoSource(true);
@@ -152,6 +162,9 @@ public class WebRtcClient {
@Override
public void onIceConnectionChange(PeerConnection.IceConnectionState newState) {
Log.d(TAG, "ICE connection state: " + newState);
if (newState == PeerConnection.IceConnectionState.CONNECTED) {
refreshVideoSource();
}
}
@Override
@@ -371,4 +384,16 @@ public class WebRtcClient {
wsClient.sendMessage(msg);
}
private void refreshVideoSource() {
if (videoCapturer != null) {
try {
Log.d(TAG, "Refreshing video capture to force a frame update for new connection");
videoCapturer.stopCapture();
videoCapturer.startCapture(videoWidth, videoHeight, videoFps);
} catch (Exception e) {
Log.e(TAG, "Error refreshing video capture: " + e.getMessage());
}
}
}
}