我设法创建了一个 android 应用程序来录制视频,但问题在于前置摄像头视频的方向。输出不符合要求。它会自动旋转。
应用程序方向是横向的。所以,我需要在横向模式下使用前置摄像头进行录制。
什么都没有解决。
我设法创建了一个 android 应用程序来录制视频,但问题在于前置摄像头视频的方向。输出不符合要求。它会自动旋转。
应用程序方向是横向的。所以,我需要在横向模式下使用前置摄像头进行录制。
什么都没有解决。
您可能想看看 AOSP VideoCamera 活动是如何实现这一点的:
if (info.facing == CameraInfo.CAMERA_FACING_FRONT) {
rotation = (info.orientation - mOrientation + 360) % 360;
} else { // back-facing camera
rotation = (info.orientation + mOrientation) % 360;
}
我在此处对另一个问题的回答中提供了更多详细信息。
在 setVideoSource 下面开始录制视频的地方添加这个
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
if (cameraId == 1) {
mediaRecorder.setProfile(CamcorderProfile
.get(CamcorderProfile.QUALITY_LOW));
mediaRecorder.setOrientationHint(270);
} else if (cameraId == 0) {
mediaRecorder.setProfile(CamcorderProfile
.get(CamcorderProfile.QUALITY_HIGH));
mediaRecorder.setOrientationHint(orientation);
}
mediaRecorder.setOrientationHint(270);
用于前置摄像头倒置问题
检查相机 ID,如果是 1,则按照媒体播放器“setOrientationHit() 的方向更改
private static final SparseIntArray REAR_ORIENTATIONS = new SparseIntArray();
static {
REAR_ORIENTATIONS.append(Surface.ROTATION_0, 270);
REAR_ORIENTATIONS.append(Surface.ROTATION_90, 0);
REAR_ORIENTATIONS.append(Surface.ROTATION_180, 90);
REAR_ORIENTATIONS.append(Surface.ROTATION_270, 180);
}
然后在媒体播放器预览准备方法为:
if(cameraId == FRONT_CAMERA) {
mMediaRecorder.setOrientationHint(REAR_ORIENTATIONS.get(rotation));
}