要使用WebRTC的VideoCapturer而不是PeerConnection,您可以按照以下步骤进行操作:
import org.webrtc.Camera1Enumerator;
import org.webrtc.Camera2Enumerator;
import org.webrtc.CameraEnumerator;
import org.webrtc.CapturerObserver;
import org.webrtc.SurfaceTextureHelper;
import org.webrtc.VideoCapturer;
import org.webrtc.VideoFrame;
import org.webrtc.VideoSink;
VideoCapturer videoCapturer = null;
if (Camera2Enumerator.isSupported(context)) {
videoCapturer = createCamera2Capturer();
} else {
videoCapturer = createCamera1Capturer();
}
private VideoCapturer createCamera1Capturer() {
CameraEnumerator enumerator = new Camera1Enumerator(false);
String[] deviceNames = enumerator.getDeviceNames();
// 选择要使用的前置或后置相机
for (String deviceName : deviceNames) {
if (enumerator.isFrontFacing(deviceName)) {
VideoCapturer capturer = enumerator.createCapturer(deviceName, null);
if (capturer != null) {
return capturer;
}
}
}
// 如果没有前置摄像头,则使用后置摄像头
if (deviceNames.length > 0) {
return enumerator.createCapturer(deviceNames[0], null);
} else {
return null;
}
}
private VideoCapturer createCamera2Capturer() {
CameraEnumerator enumerator = new Camera2Enumerator(context);
String[] deviceNames = enumerator.getDeviceNames();
// 选择要使用的前置或后置相机
for (String deviceName : deviceNames) {
if (enumerator.isFrontFacing(deviceName)) {
VideoCapturer capturer = enumerator.createCapturer(deviceName, null);
if (capturer != null) {
return capturer;
}
}
}
// 如果没有前置摄像头,则使用后置摄像头
if (deviceNames.length > 0) {
return enumerator.createCapturer(deviceNames[0], null);
} else {
return null;
}
}
videoCapturer.initialize(surfaceTextureHelper, context, videoSink);
videoCapturer.startCapture(videoWidth, videoHeight, videoFps);
请注意,您需要使用合适的参数来初始化和启动VideoCapturer。
这是一个简单的示例,演示了如何使用WebRTC的VideoCapturer而不是PeerConnection。您可以根据自己的需求进行适当的修改和调整。
上一篇:不使用PDP包的偏依赖图