Como fazer com que o vídeo capturado pela câmera frontal não seja o inverso do Android?
Gravar vídeo usando o MediaRecorder. Ao usar a câmera traseira, ele funciona bem, mas ao usar a câmera frontal, o vídeo capturado está sendo invertido / inverso. Significa que o item à direita aparecerá no lado esquerdo. A visualização da câmera está funcionando bem , apenas o vídeo final capturado invertido.
Aqui está a visualização da câmera
Mas o vídeo final aparece assim(todo o item no lado esquerdo, aparece no lado direito)
O que eu tentei até agora:
Eu tentei aplicar omatrix
quando preparar gravador, mas parece que muda alguma coisa.
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
}
Já li todas as perguntas abaixo, mas tudo isso parece não ter resolvido meu problema. Para obter informações, estou usandoSurfaceView
para a visualização da câmera, então essa pergunta aqui não ajuda.
1)Android flip espelho da câmera frontal capotou vídeo
2)Como impedir que o Android inverta a imagem da câmera frontal?
3)Evite virar a câmera frontal
Então, minha pergunta é:
1) Como capturar um vídeo pela câmera frontal que não está sendo inverso (exatamente o mesmo com a visualização da câmera)?
2) Como conseguir isso quando a visualização da câmera está usandoSurfaceView
mas nãoTextureView
? (faça toda a pergunta que mencionei acima, conte sobre o usoTextureView
)
Todas as soluções possíveis são bem-vindas.
EDITAR
Fiz 2 vídeos curtos para esclarecer o problema, faça o download e dê uma olhada