He grabado un vídeo en HD con el Samsung Galaxy II, cuando me subí a YouTube, me encontré con que volvió a 90 grados, como el Retrato de diseño de 1080×1920 NO 1920×1080.
He encontrado la causa del problema:

YouTube es la lectura de metadatos de vídeo y gire el vídeo acorde con los gustos de Exif
orientación antes de la codificación

Este es ExifTool informe (por favor vea la última etiqueta de «Rotación»):

ExifTool Version Number         : 8.61
File Name                       : video.mp4
Directory                       : .
File Size                       : 217 MB
File Modification Date/Time     : 2011:08:11 00:47:23+04:00
File Permissions                : rw-rw-rw-
File Type                       : 3GP
MIME Type                       : video/3gpp
Major Brand                     : 3GPP Media (.3GP) Release 4
Minor Version                   : 0.3.0
Compatible Brands               : 3gp4, 3gp6
Movie Data Size                 : 227471371
Movie Header Version            : 0
Create Date                     : 1900:01:00 00:00:00
Modify Date                     : 1900:01:00 00:00:00
Time Scale                      : 1000
Duration                        : 0:01:46
Preferred Rate                  : 1
Preferred Volume                : 100.00%
Preview Time                    : 0 s
Preview Duration                : 0 s
Poster Time                     : 0 s
Selection Time                  : 0 s
Selection Duration              : 0 s
Current Time                    : 0 s
Next Track ID                   : 3
Track Header Version            : 0
Track Create Date               : 1900:01:00 00:00:00
Track Modify Date               : 1900:01:00 00:00:00
Track ID                        : 1
Track Duration                  : 0:01:46
Track Layer                     : 0
Track Volume                    : 0.00%
Image Width                     : 1920
Image Height                    : 1080
Graphics Mode                   : srcCopy
Op Color                        : 0 0 0
Compressor ID                   : avc1
Source Image Width              : 1920
Source Image Height             : 1080
X Resolution                    : 72
Y Resolution                    : 72
Bit Depth                       : 24
Video Frame Rate                : 30.023
Matrix Structure                : 1 0 0 0 1 0 0 0 1
Media Header Version            : 0
Media Create Date               : 1900:01:00 00:00:00
Media Modify Date               : 1900:01:00 00:00:00
Media Time Scale                : 16000
Media Duration                  : 0:01:46
Handler Type                    : Audio Track
Handler Description             : SoundHandler
Balance                         : 0
Audio Format                    : mp4a
Audio Channels                  : 1
Audio Bits Per Sample           : 16
Audio Sample Rate               : 16000
Play Mode                       : SEQ_PLAY
Avg Bitrate                     : 17.1 Mbps
Image Size                      : 1920x1080
Rotation                        : 90

¿Cómo puedo eliminar todo los datos Exif o editar sólo la propiedad de Rotación?

2 Comentarios

  1. 42

    Archivos Mp4 (y muchos otros), el uso de la MPEG-4 estándar, que organiza los datos en su interior en cajas pequeñas llamadas átomos. Usted puede encontrar una gran descripción de los átomos en este Página. En resumen, los átomos están organizados en un árbol como la estructura, donde un átomo puede ser el padre de otros átomos o un contenedor de datos, pero no tanto (aunque algunas personas rompen esta regla)

    En particular, el átomo que está buscando se llama «tkhd» (Encabezado de la Pista). Usted puede encontrar una lista de los átomos aquí.

    Dentro de este átomo usted encontrará los metadatos del vídeo. La estructura de la «tkhd» átomo se especifica aquí

    Finalmente el fragmento de metadatos que usted necesite (que no es un átomo), se llama «Estructura de la Matriz». De developer.apple.com:

    Todos los valores de la matriz son de 32 bits de punto fijo de números dividido como
    16.16, excepto para el {u, v, w} columna, que contiene los 32 bits de punto fijo de números dividido como 2.30.

    Esto se muestra en la siguiente imagen:

    Cómo quitar o editar datos Exif de vídeo mp4?

    El 9 byte de la matriz comienza en el byte 48 de la «tkhd» átomo. Un ejemplo de una «estructura de la matriz» para una orientación de 0° sería 1 0 0 0 1 0 0 0 1 (la matriz de identidad)

    ASÍ!

    Después de todo eso, lo que usted necesita es modificar esta matriz. El siguiente párrafo está tomado de developer.apple.com:

    Una transformación de la matriz define la forma de asignar puntos a partir de una coordenada
    el espacio dentro de otro espacio de coordenadas. Al modificar el contenido de un
    la transformación de la matriz, se pueden realizar varias estándar de gráficos
    operaciones de la pantalla, incluyendo la traducción, rotación y escala. El
    la matriz utilizada para realizar de dos dimensiones transformaciones se describe
    matemáticamente por una de 3-por-3 matriz.

    Esto significa que la matriz de transformación se define una función que asigna a cada coordenada en una nueva.

    Ya que sólo necesita para girar la imagen, simplemente modifique el más a la izquierda de 2 x 3 matriz, el cual es definido por los bytes 0, 1, 3, 4, 6 y 7.

    Aquí están los 2 x 3 matrices puedo usar para representar cada orientación (valores de 0, 1, 3, 4, 6 y 7 de la matriz de 3×3):

    0°: (x’, y’) = (x, y)

    1 0

    0 1

    0 0

    90°: (x’, y’) = (altura – y, x)

    0 1

    -1 0

    altura 0

    180°: (x’, y’) = (anchura x altura – y)

    -1 0

    0 -1

    anchura altura

    270°: (x’, y’) = (y, ancho – x)

    0 -1

    1 0

    0 ancho

    Si no dispone de ellos, la anchura y la altura pueden ser obtenidos sólo después de que la estructura de la matriz. También son de punto fijo de números de 4 bytes (16.16).

    Es muy probable que su vídeo de metadatos contiene el 90° de la Matriz

    (Gracias a Phil Harvey, creador de Exiftool, por su ayuda y un maravilloso software)

    • corregir algunos errores: matriz de rotación se define por los bytes 0, 1, 3, 4. Acabo de enterarme de algunos archivos 3gp con hexdump, la anchura y la altura, tal vez inútil.
    • Usted necesita bytes 6 y 7 para especificar la función de rotación. Por ejemplo 180°: (x’, y’) = (anchura x altura – y) para las coordenadas (0, 0) (arriba a la izquierda) se trasladó a (anchura, altura) (abajo, derecha)
    • Esto es genial, pero el código de ejemplo sería un montón de ayuda! Nadie?
    • Cualquier software de Linux para editar estas propiedades para los vídeos?
    • Terminológica nota: estándar MPEG-4 utiliza el término caja, no átomo. Los átomos están en .mov archivos (QuickTime de Apple containters).
    • Se puede hacer esto usando JAVA sin ningún tipo de bibliotecas externas? Como la obtención de la matriz de bytes en el archivo MP4 y la búsqueda de la Cabecera de la Pista(tkhd).
    • Esta respuesta da un gran teórico de fondo. Para una solución práctica, vea stackoverflow.com/a/31573690/5069869

  2. 0

    En mi caso el cambio de los datos exif no se soluciona el problema, porque es, de hecho, correcto. El problema es que la mayoría de los jugadores ignoran (es decir, se asume que es 0).

    Si quieres jugar con la Rotación de la etiqueta exif, se puede controlar a través de MediaRecorder.setOrientationHint(). Que es mucho más fácil que modificar es después de los hechos. Si el YouTube uploader respeta la etiqueta, entonces eso es todo lo que usted necesita.

    Pero la única solución que he encontrado es para rotar el vídeo en sí, o el uso de la interfaz de usuario de sugerencias para guiar a los usuarios a grabar el vídeo en la cámara naturales del 0 orientación.

    No hay un mecanismo para la rotación de videos en Android.

Dejar respuesta

Please enter your comment!
Please enter your name here