录像保存时,旋转角度要与所拍录像时的角度保持一致,否则,看起来就会出现角度不度,巅倒等问题。
一般在开始录像之前会先去初始化录像
initializeRecorder 中会去读取当前的录像或拍照的旋转角度,并跟据当前的角度来选择一个角度写到所拍
照片或者视频的 exif 信息中去。
1 // See android.hardware.Camera.Parameters.setRotation for 2 // documentation. 3 // Note that mOrientation here is the device orientation, which is the opposite of 4 // what activity.getWindowManager().getDefaultDisplay().getRotation() would return, 5 // which is the orientation the graphics need to rotate in order to render correctly. 6 int rotation = 0; 7 if (mOrientation != OrientationEventListener.ORIENTATION_UNKNOWN) { 8 CameraInfo info = CameraHolder.instance().getCameraInfo()[mCameraId]; 9 if (info.facing == CameraInfo.CAMERA_FACING_FRONT) { 10 rotation = (info.orientation - mOrientation + 360) % 360; 11 } else { // back-facing camera 12 rotation = (info.orientation + mOrientation) % 360; 13 } 14 } else { 15 //Get the right original orientation 16 CameraInfo info = CameraHolder.instance().getCameraInfo()[mCameraId]; 17 rotation = info.orientation; 18 } 19 // mMediaRecorder.setOrientationHint(rotation); 20 21 if (mCameraId == CameraInfo.CAMERA_FACING_FRONT) { 22 if (rotation == 270 || rotation == 90 || rotation == 180) { 23 mMediaRecorder.setOrientationHint(180); 24 } else { 25 mMediaRecorder.setOrientationHint(0); 26 } 27 } else { 28 if (rotation == 180){ 29 mMediaRecorder.setOrientationHint(180); 30 }else{ 31 mMediaRecorder.setOrientationHint(0); 32 } 33 }
时间: 2024-10-19 04:52:25