Comment supprimer ou modifier Exif De mp4 video?

j'ai enregistré une vidéo Full HD avec Samsung Galaxy II, quand je l'ai téléchargé sur YouTube, j'ai trouvé qu'il tournait à 90 degrés comme Portrait layout 1080x1920 pas 1920x1080. J'ai trouvé la cause du problème:

YouTube est en train de lire les métadonnées de la vidéo et de tourner la vidéo en cours D'exécution orientation avant encodage

ceci est le rapport ExifTool (voir la dernière balise "Rotation""):

Comment supprimer des données Exif entières ou simplement modifier la Rotation propriété?

21
demandé sur Exey Panteleev 2011-08-11 15:39:47

2 réponses

les fichiers Mp4 (et beaucoup d'autres) utilisent le MPEG-4 standard, qui organise les données à l'intérieur dans des cases appelées atomes. Vous pouvez trouver une grande description de l'atome dans ce Page. En bref, les atomes sont organisés dans une structure arborescente, où un atome peut être soit le parent d'autres atomes, soit un contenant de données, mais pas les deux (bien que certaines personnes enfreignent cette règle)

en particulier l'atome que vous recherchez s'appelle "tkhd" (en-tête de piste). Vous pouvez trouver une liste des atomes ici.

dans cet atome vous trouverez les métadonnées de la vidéo. La structure de l'atome "tkhd" est spécifiée ici

enfin le morceau de métadonnées dont vous avez besoin (qui n'est pas un atome), est appelé "structure de matrice". À partir de developer.apple.com:

toutes les valeurs de la matrice sont des nombres à points fixes de 32 bits divisés par 16.16, sauf pour la colonne {u, v, w}, qui contient Nombre de points fixes de 32 bits divisé par 2,30.

Ceci est montré dans l'image suivante:

"Matrix Structure" a transformation matrix

la matrice de 9 octets commence dans l'octet 48 de l'atome "tkhd". Un exemple d'une "structure de la matrice" pour une orientation de 0° serait 1 0 0 0 1 0 0 0 1 (la matrice identité)

alors!

Après tout, ce que vous avez besoin est de modifier cette matrice. La prochaine parragraph est pris à partir de developer.apple.com:

une matrice de transformation définit comment cartographier les points à partir d'une seule coordonnée espace dans un autre espace de coordonnées. En modifiant le contenu d'un matrice de transformation, vous pouvez effectuer plusieurs graphiques standard les opérations d'affichage, y compris la traduction, la rotation et la mise à l'échelle. Le la matrice utilisée pour accomplir les transformations bidimensionnelles est décrite mathématiquement par un 3-en-3 de la matrice.

Cela signifie que la matrice de transformation définit un fonction qui fait correspondre à chaque coordonner en un nouveau.

puisque vous n'avez besoin que de faire tourner l'image, modifiez simplement la matrice de gauche la plus 2 x 3, qui est définie par les octets 0, 1, 3, 4, 6 et 7.

Voici les matrices 2 x 3 que j'utilise pour représenter chaque orientation (valeurs 0, 1, 3, 4, 6 et 7 de la matrice 3x3):

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

1 0

0 1

0 0

90°: (x', y') = (hauteur - y, x)

0 1

-1 0

hauteur 0

180°: (x', y') = (largeur x hauteur - y)

-1 0

0 -1

largeur hauteur

270°: (x', y') = (y, largeur - x)

0 -1

1 0

0 largeur

Si vous ne les avez pas, la largeur et la hauteur peuvent être obtenus juste après la matrice structure. Il s'agit également de points fixes de 4 octets (16.16).

il est très probable que vos métadonnées vidéo contiennent la matrice à 90°

(merci à Phil Harvey, créateur de Exiftool pour son aide et un merveilleux logiciel)

39
répondu ignacio.munizaga 2013-04-24 18:08:13

dans mon cas changer les données exif n'a pas résolu le problème parce qu'il est, en fait, correct. Le problème est que la plupart des joueurs l'ignorent (c'est-à-dire qu'ils pensent que c'est 0).

si vous voulez jouer avec la balise Rotation exif, vous pouvez la contrôler via MediaRecorder.setOrientationHint (). C'est beaucoup plus facile que de modifier après coup. Si YouTube uploader respecte l'étiquette, alors c'est tout ce dont vous avez besoin.

mais la seule solution que j'ai trouvée est de tourner la vidéo elle-même, ou utilisez des conseils UI pour guider les utilisateurs à enregistrer la vidéo dans l'orientation 0 naturelle de la caméra.

il n'y a pas de mécanisme intégré pour la rotation des vidéos sur Android.

0
répondu tennessee sombrero 2013-04-10 22:51:38