android - voltear - mi camara frontal sale al reves
Android flip espejo de la cámara frontal volcó video (4)
Intento grabar un video de la cámara frontal de Android mientras lo visualizo en la vista de la superficie también.
Lo que descubrí con la cámara frontal es que el espejo voltea el video durante la grabación, a pesar de que la vista de la superficie muestra una vista normal.
¿Hay alguna manera de prevenir esto o solucionarlo?
Leí sobre otros artículos de stackoverflow como ¿Cómo evitar que Android invierta la imagen de la cámara frontal?
Pero parece que solo se trata de tomar fotos con la cámara frontal e invertir la imagen, que ya solucioné usando la matriz yo mismo. Sin embargo, parece que usar una matriz para un video no funciona.
No tengo una solución, pero me parece que la clave es:
MediaRecorder.setOrientationHint
Establece la sugerencia de orientación para la reproducción de video de salida. Este método debe invocarse antes de prepare (). Este método no activará el fotograma de video fuente para girar durante la grabación de video, sino para agregar una matriz de composición que contenga el ángulo de rotación en el video de salida si el formato de salida es OutputFormat.THREE_GPP o OutputFormat.MPEG_4 para que un reproductor de video pueda elegir el adecuado orientación para la reproducción. Tenga en cuenta que algunos reproductores de video pueden elegir ignorar la matriz de composición en un video durante la reproducción.
Estoy grabando video en H264 y no funciona para mí :( Pero podría ayudarte. ¿Lo intentaste?
Tienes que aplicar una transformación matricial, como esta:
if(isFrontCamera) {
m.preScale(-ratio, ratio);
} else {
m.preScale(ratio, ratio);
}
Suponiendo que no cambia el tamaño de nada, la ración sería 1, lo que hace que la cámara anterior a la preclasificación sea obsoleta.
En la documentación del método setDisplayOrientation ( http://developer.android.com/reference/android/hardware/Camera.html ), podemos encontrar:
Tenga en cuenta que la visualización previa de las cámaras frontales se invierte horizontalmente antes de la rotación, es decir, la imagen se refleja a lo largo del eje vertical central del sensor de la cámara. Entonces los usuarios pueden verse a sí mismos como si estuvieran mirando en un espejo.
Por lo tanto, su pantalla de vista previa debe voltearse pero no su video grabado. Con su pantalla de vista previa, ¿se ve a sí mismo mirando al espejo? Si es así, todo está funcionando bien.
En mi caso, solo tengo que voltear horizontalmente al jugarlo. Al grabar, ya está volteado para el efecto espejo y, como veo, no es posible modificarlo. Sin embargo, debajo del código resolvió mi problema al jugar.
videoPlayer.setScaleX(-1);