Samsung Galaxy II でフル HD ビデオを録画し、YouTube にアップロードしたところ、1920x1080 ではなく、ポートレート レイアウト 1080x1920 のように 90 度回転していることに気付きました。問題の原因がわかりました。
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 データ全体を削除したり、回転プロパティのみを編集するにはどうすればよいですか?
ベストアンサー1
MP4ファイル(およびその他多数)は、MPEG-4標準では、内部のデータがアトムと呼ばれる小さな箱に整理されます。アトムの優れた説明は、こちらにありますページつまり、原子はツリーのような構造に編成されており、原子は他の原子の親になるか、データのコンテナになることができますが、両方になることはできません(ただし、このルールを破る人もいます)
特に、探している原子は「tkhd」(トラックヘッダー)と呼ばれます。原子のリストを見つけることができます。ここ。
このアトム内にはビデオのメタデータがあります。「tkhd」アトムの構造は次のように指定されます。ここ
最後に、必要なメタデータのチャンク(アトムではない)は「マトリックス構造」と呼ばれます。開発者向け:
行列内のすべての値は、16.16 で割った 32 ビット固定小数点数です。ただし、{u、v、w} 列には、2.30 で割った 32 ビット固定小数点数が含まれます。
これは次の画像に示されています。
9 バイトのマトリックスは、「tkhd」アトムのバイト 48 から始まります。0° の方向の「マトリックス構造」の例は、1 0 0 0 1 0 0 0 1 (単位マトリックス) です。
それで!
これらすべてが終わったら、この行列を修正する必要があります。次の段落は、開発者向け:
変換マトリックスは、ある座標空間から別の座標空間に点をマップする方法を定義します。変換マトリックスの内容を変更することで、平行移動、回転、拡大縮小など、いくつかの標準的なグラフィック表示操作を実行できます。2 次元変換を実行するために使用されるマトリックスは、数学的には 3 x 3 マトリックスで表されます。
つまり、変換行列は各座標を新しい座標にマッピングする関数を定義します。
画像を回転させるだけなので、バイト 0、1、3、4、6、7 で定義される左端の 2 x 3 マトリックスを変更するだけです。
各方向を表すために使用する 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 幅
これらがない場合、幅と高さはマトリックス構造の直後に取得できます。これらも 4 バイト (16.16) の固定小数点数です。
動画のメタデータに90°マトリックスが含まれている可能性が非常に高い
(フィル・ハーヴェイ氏、エグジフツール彼の助けと素晴らしいソフトウェアに感謝します)