我已经将libjingle库用于webrtc android应用程序。我已经成功实现了双向通信的音频视频流。
直到现在我才使用前置摄像头进行视频流传输,但现在我想为用户提供选择前置或后置摄像头进行视频流的选项。
我如何存档?我不知道这个。
我已经尝试过VideocaptureAndroid切换摄像头方法但不能正常工作。
如果有人知道然后帮我解决这个问题吗?
提前致谢。
答案 0 :(得分:1)
您需要使用相同的videoCapturer对象,该对象是在创建初始MediaStream时创建的。
CameraVideoCapturer cameraVideoCapturer = (CameraVideoCapturer) videoCapturer;
cameraVideoCapturer.switchCamera(null);
答案 1 :(得分:0)
使用此版本:org.webrtc:google-webrtc:1.0.22672
通过这种方法创建VideoCapturer:
VideoCapturer videoCaptor = createCameraCaptor(new Camera1Enumerator(false));
诀窍在于isBackFacing(...)/ isFrontFacing(...)
private VideoCapturer createCameraCaptor(CameraEnumerator enumerator) {
final String[] deviceNames = enumerator.getDeviceNames();
// First, try to find back facing camera
Logging.d(TAG, "Looking for back facing cameras.");
for (String deviceName : deviceNames) {
if (enumerator.isBackFacing(deviceName)) {
Logging.d(TAG, "Creating back facing camera captor.");
VideoCapturer videoCapturer = enumerator.createCapturer(deviceName, null);
if (videoCapturer != null) {
return videoCapturer;
}
}
}
// back facing camera not found, try something else
Logging.d(TAG, "Looking for other cameras.");
for (String deviceName : deviceNames) {
if (!enumerator.isBackFacing(deviceName)) {
Logging.d(TAG, "Creating other camera captor.");
VideoCapturer videoCapturer = enumerator.createCapturer(deviceName, null);
if (videoCapturer != null) {
return videoCapturer;
}
}
}
return null;
}
答案 2 :(得分:0)
这里是使用libjingle的示例。
如果要在前后摄像头之间切换,则需要获取要使用的设备的名称。可以使用VideoCapturerAndroid.getNameOfFrontFacingDevice()
或VideoCapturerAndroid.getNameOfRearFacingDevice()
完成此操作,具体取决于您要使用前置摄像头还是后置摄像头。
这是一个简单的示例,说明如何使用io.pristine.libjingle:9127获取正确的VideoCapturer
private VideoCapturer getCameraCapturer(boolean useFrontCamera) {
String deviceName = useFrontCamera ? VideoCapturerAndroid.getNameOfFrontFacingDevice() : VideoCapturerAndroid.getNameOfBackFacingDevice();
return VideoCapturerAndroid.create(deviceName);
}
如果您使用的是其他版本的LibJingle或由于任何原因而无法使用,请通知我,我们将竭诚为您服务!
干杯