panda大学習帳外伝

マスクと不精髭。

メインページ | panda大学習帳 | 第三倉庫 | 用語集📒 | 本サイトについて | プライバシーポリシー


縦長で撮影したスマホ動画のXMP情報を操作してみる。

最終更新日: Tue May 3 14:10:53 2022 +0900

はじめに

横浜市営地下鉄のブルーラインの4000形の動画を撮ってきたのですが、その中に縦長で撮影したスマホ動画がありまして、これをAviUtlに読み込ませると…

のような感じに横長の動画として読み込まれてしまいます(AviUtlの「環境設定」で「最大画像サイズ」を4560x3840に設定してみたのですが、結果は変わりませんでした)。

Windowsのエクスプローラーで上記の画像のプロパティを読み出してみると横長の動画として表示されますので、AviUtlはそれをそのまま信じて横長の動画として読み込んでいる可能性がありそうです。

そこで、「画像にもExifのOrientationと似たような変換のための設定のようなものが存在するはずだ。」という仮説を立てつつ、修正の方法について探ることにしました。

なお、本記事で登場する動画等の撮影にはASUSのスマホ(ROG Phone 5(ZS673KS))を使用しています。

スポンサーリンク

XMP仕様のごく一部を完全に理解する。

前置き: 画像の場合

スマホで撮影した写真のExif情報を確認すると、写真によってはOrientationの情報が…

(上図の赤矢印)のようになっていることがあります。

※↑の画面ではGIMPを使って画像を表示していますが、Exif情報におけるOrientationの値をGIMPで直接知ることはできないようです。

最初から横長で撮影するとOrientationの情報は以下の赤矢印のように表示されます。

exiftoolを使ったRotation情報の読み出し

上記の情報と同様の情報、仕様または規格が動画にもないかと思って調べてみたところ、XMP(Extensible Metadata Platform)なるISO規格があるようです。

このXMP仕様の中にRotationなる情報があるようです。

そこで、AviUtlで横向きに読み込まれてしまう縦長の動画(yokohama_subway_4000_portrait.mp4(仮名))と横長で撮影した動画(yokohama_subway_4000_landscape.mp4(仮名))のXMPの情報を読み出してみると…

> exiftool(-k).exe yokohama_subway_4000_portrait.mp4
ExifTool Version Number         : 12.41
File Name                       : yokohama_subway_4000_portrait.mp4
(中略)
Rotation                        : 90
(後略)

> exiftool(-k).exe yokohama_subway_4000_landscape.mp4
ExifTool Version Number         : 12.41
File Name                       : yokohama_subway_4000_landscape.mp4
(中略)
Rotation                        : 0
(後略)

という結果が得られました。

縦長の動画に対してRotationにデフォルト値っぽい値(0でない値)が設定されているので、AviUtlはこれを無視している可能性が高そうです。



exiftoolを使ったRotation情報の書き換え

その1: 動作確認

前節でexiftool(-k).exeなるツールをしれっと使っていますが、以下のサイトからダウンロードしました。

ExifTool by Phil Harvey

これを使うとRotation情報の書き換えができるようなので、書き換えてみます。

> exiftool(-k).exe -Rotation=0 yokohama_subway_4000_portrait.mp4
    1 image files updated

書き換えられていることを確認します。

> exiftool(-k).exe -Rotation=0 yokohama_subway_4000_portrait.mp4
Rotation                        : 0

書き換えた動画ファイルをWindowsのエクスプローラーのサムネイルで観察すると…

のように表示されます。

(a)がRotation変更前(Rotation=90)の動画で、(b)が変更後(Rotation=0)の動画です。

変更後の動画は横長の動画として表示されていることがわかります。

その2: AviUtlで編集した動画の復元

前節でRotationを0に設定した縦長の動画をAviUtlに読み込ませてみましたが、残念ながら横長の動画として読み込まれました。

Rotationの情報が失われているので、当然と言えば当然の結果です。

そこで、AviUtlで読み込んだ動画を無理矢理そのまま編集してH.264でエンコードし、その結果生成された動画のRotationを再度設定することにします。

> exiftool(-k).exe -Rotation=90 depart_from_kaminagaya_20220502.mp4
Rotation                        : 90

Rotationを上記のコマンドで設定後の動画をWindowsのエクスプローラーのサムネイルで観察します。

上図の赤矢印(a)が設定前の動画で、(b)が設定後の動画です。

横長の動画から縦長の動画に表示が変わっていることがわかります。

スポンサーリンク

この動画をTwitterに投稿します。

Twitterに投稿できました。✌

まとめ

スマホで撮った動画にもXMP規格に沿った情報が他にもいろいろと埋め込まれているようなので、必要に応じて使っていきたいところですが、Twitterに投稿することができてまずはひと安心です。

AviUtlで画像を行う際には反時計回りに90度回転した状態のまま編集を行わねばなりませんが、簡単な編集であれば対応できそうです。

本記事の内容とはあまり関係ありませんが、そろそろH.265でエンコードした動画もTwitterに投稿できるようにしていただきたいところではあります。

リンク

横浜市営地下鉄の4000形に営業運転初日の最初の列車に乗ってきた。 | メインページ | panda大学習帳 | 第三倉庫 | 用語集📒 | 本サイトについて | プライバシーポリシー


スポンサーリンク