如何从mp4视频中删除或编辑Exif? [英] How to remove or edit Exif from mp4 video?

查看:2280
本文介绍了如何从mp4视频中删除或编辑Exif?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用Samsung Galaxy II录制了全高清视频,当我将其上传到YouTube时,我发现它像人像版图1080x1920而不是1920x1080一样旋转了90度. 我找到了问题的原因:

YouTube正在读取视频元数据并根据Exif旋转视频 编码前的方向

这是ExifTool报告(请参见最后一个标记"Rotation"):

如何删除整个Exif数据或仅编辑Rotation属性?

解决方案

MP4文件(以及许多其他文件)使用 Page 中找到原子的详细说明.简而言之,原子以树状结构组织,其中一个原子可以是其他原子的父代,也可以是数据容器,但不能同时是两者(尽管有人打破了这个规则)

尤其是您要寻找的原子称为"tkhd"(轨道头).您可以在此处找到原子列表.

在此原子内,您将找到视频的元数据.在

所以!

毕竟,您需要修改此矩阵.下一个段落来自 Exiftool 的创建者Phil Harvey的帮助和一个很棒的软件)

I recorded a Full HD video with Samsung Galaxy II, when I uploaded it to YouTube I found that it turned to 90 degrees like Portrait layout 1080x1920 NOT 1920x1080. I found the cause of the problem:

YouTube is reading video metadata and rotate video acording Exif orientation before encoding

This is ExifTool report (please see last tag "Rotation"):

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

How do I remove whole Exif data or just edit Rotation property?

解决方案

Mp4 files (and many others) use the MPEG-4 standard, which arranges the data inside it in little boxes called atoms. You can find a great description of atoms in this Page. In short, atoms are organized in a tree like structure, where an atom can be either the parent of other atoms or a container of data, but not both (although some people break this rule)

In particular the atom you are looking for is called "tkhd" (Track Header). You can find a list of atoms here.

Within this atom you will find metadata of the video. The structure of the "tkhd" atom is specified here

Finally the chunk of metadata you need (which is not an atom), is called "Matrix Structure". From developer.apple.com:

All values in the matrix are 32-bit fixed-point numbers divided as 16.16, except for the {u, v, w} column, which contains 32-bit fixed-point numbers divided as 2.30.

This is shown in the following image:

The 9 byte matrix starts in byte 48 of the "tkhd" atom. An example of a "matrix structure" for an orientation of 0° would be 1 0 0 0 1 0 0 0 1 (the identity matrix)

SO!

After all that, what you need is to modify this matrix. The next parragraph is taken from developer.apple.com:

A transformation matrix defines how to map points from one coordinate space into another coordinate space. By modifying the contents of a transformation matrix, you can perform several standard graphics display operations, including translation, rotation, and scaling. The matrix used to accomplish two-dimensional transformations is described mathematically by a 3-by-3 matrix.

This means that the transformation matrix defines a function, that maps each coordinate into a new one.

Since you only need to rotate the image, simply modify the left most 2 x 3 matrix, which is defined by the bytes 0, 1, 3, 4, 6 and 7.

Here are the 2 x 3 matrices I use to represent each orientation (values 0, 1, 3, 4, 6 and 7 of the 3x3 matrix):

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

90°: (x', y') = (height - y, x)
0 1
-1 0
height 0

180°: (x', y') = (widht - x, height - y)
-1 0
0 -1
width height

270°: (x', y') = (y, width - x)
0 -1
1 0
0 width

If you don't have them, the width and height can be obtained just after the matrix structure. They are also fixed point numbers of 4 bytes (16.16).

It is quite probable your video metadata contains the 90° Matrix

(Thanks to Phil Harvey, creator of Exiftool for his help and a wonderful software)

这篇关于如何从mp4视频中删除或编辑Exif?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆