我使用MediaRecorder录制视频。当使用后置摄像头时,它运行良好,但当使用前置摄像头时,所拍摄的视频被翻转/倒置。也就是说,在右边的物品会出现在左边。相机预览功能正常,只是最终捕获的视频被翻转了。
这是相机预览的样子
但是最终的视频看起来像这样(左侧的所有项目会出现在右侧)
我尝试过的方法:
我尝试在准备录制器时应用matrix
,但似乎没有改变任何东西。
private boolean prepareRecorder(int cameraId){
//# Create a new instance of MediaRecorder
mRecorder = new MediaRecorder();
setCameraDisplayOrientation(this,cameraId,mCamera);
int angle = getVideoOrientationAngle(this,cameraId);
mRecorder.setOrientationHint(angle);
if(cameraId == Camera.CameraInfo.CAMERA_FACING_FRONT){
Matrix matrix = new Matrix();
matrix.preScale(1.0f,-1.0f);
}
//all other code to prepare recorder here
}
我已经阅读了下面所有的问题,但所有这些似乎都不能解决我的问题。值得一提的是,我使用SurfaceView
进行摄像头预览,因此这里的问题无法帮助我。
所以我的问题是:
1)如何通过前置摄像头捕捉视频,并且视频不会倒置(与相机预览完全相同)?
2)当相机预览使用SurfaceView
而不是TextureView
时,如何实现这一点?(因为我提到的所有问题都涉及使用TextureView
)
最好的解决方案都欢迎...谢谢
编辑
我制作了两个短视频剪辑来澄清问题,请下载并查看