如何从 mp4 视频中删除或编辑 Exif?

2024-02-27

我用 Samsung Galaxy II 录制了一个全高清视频,当我将其上传到 YouTube 时,我发现它变成了 90 度,就像纵向布局 1080x1920 而不是 1920x1080。 我找到了问题的原因:

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

这是 ExifTool 报告(请参阅最后一个标签“旋转”):



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
  

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


Mp4 文件(以及许多其他文件)使用MPEG-4 http://en.wikipedia.org/wiki/MPEG-4标准,它将内部的数据排列在称为原子的小盒子中。你可以在这找到关于原子的精彩描述Page http://atomicparsley.sourceforge.net/mpeg-4files.html。简而言之,原子被组织成树状结构,其中一个原子可以是其他原子的父级,也可以是数据的容器,但不能同时是两者(尽管有些人打破了这个规则)

特别是您正在寻找的原子称为“tkhd”(轨道头)。你可以找到原子列表here http://www.mp4ra.org/atoms.html.

在这个原子中,您将找到视频的元数据。指定了“tkhd”原子的结构here http://developer.apple.com/library/mac/#documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-SW1

最后,您需要的元数据块(不是原子)称为“矩阵结构”。从开发者.apple.com http://developer.apple.com/library/mac/#documentation/QuickTime/QTFF/QTFFChap4/qtff4.html#//apple_ref/doc/uid/TP40000939-CH206-18737:

矩阵中的所有值都是 32 位定点数,除以 16.16,但 {u, v, w} 列除外,该列包含除以 2.30 的 32 位定点数。

如下图所示:

9 字节矩阵从“tkhd”原子的字节 48 开始。 0° 方向的“矩阵结构”示例为 1 0 0 0 1 0 0 0 1(单位矩阵)

SO!

毕竟,你需要修改这个矩阵。下一段摘自开发者.apple.com http://developer.apple.com/library/mac/#documentation/QuickTime/QTFF/QTFFChap4/qtff4.html#//apple_ref/doc/uid/TP40000939-CH206-18737:

变换矩阵定义如何从一个坐标映射点 空间到另一个坐标空间。通过修改a的内容 变换矩阵,可以进行多种标准图形的变换 显示操作,包括平移、旋转和缩放。这 描述了用于完成二维变换的矩阵 数学上由 3×3 矩阵表示。

这意味着变换矩阵定义了一个函数,将每个坐标映射到一个新坐标。

由于您只需要旋转图像,因此只需修改最左边的 2 x 3 矩阵,该矩阵由字节 0、1、3、4、6 和 7 定义。

以下是我用来表示每个方向的 2 x 3 矩阵(3x3 矩阵的值 0、1、3、4、6 和 7):

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

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

180°:(x', y') = (宽度 - x, 高度 - y)
-1 0
0 -1
宽度高度

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

如果没有,宽度和高度可以在矩阵结构之后获得。它们也是 4 字节的定点数 (16.16)。

您的视频元数据很可能包含 90° 矩阵

(感谢菲尔·哈维,创造者Exiftool http://www.sno.phy.queensu.ca/~phil/exiftool/感谢他的帮助和出色的软件)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 mp4 视频中删除或编辑 Exif? 的相关文章

随机推荐