mp4 mov rotate

スマホ動画の回転情報を得て我が Y901x にて正しい回転表示をさせる。
と随分前に書いてずっとサボッていたけどいいかげんに本気出そうと思う。
検索ワードを mov バイナリ 回転 とか mov に決め打ちして探したら。

バイナリエディタで .mov を回転 ? マキシマ文庫

おぉ多分コレだ!
回転情報書き換えなら Mac の QuickTime だけで簡単にできるのは置いておいて。
そこのバイナリを取得すれば回転情報は得られるってことね。

バイナリ取得や書き換えなら C や Python 等で簡単にできるのに。
てか既に沢山ありそう、参考用に探してみよう。

GitHub – danielgtaylor/qtrotate: Tools for handling rotated Quicktime/MP4 files

ズバリをあっさり見つけた。
mdat や trac アトムも取得しているし他にもやることあるみたい。
mov の構造は下記に、ソースコメントのリンク先はもう古いので。

Movie Atoms

試すならサポート終了の Python2 コードなので Python3 に書き換えてね。
print に括弧を付加と割り算を二重スラッシュにするのは毎度のこととして。
atom 比較の所の文字列には全部 b を付けてバイナリ比較に変更するのを忘れずに。
よく解らない人用に筆者が書き換えしたものを一応置いておきます。

qtrotate_py3.zip

どうやら mov と mp4 は同じ回転情報を使うようで mp4 にも適用できる。
とりあえず筆者が iPhone で撮影したり編集した動画は回転情報が得られた。

qtrotate

書き換えも問題無く可能だった。
Nautilus のサムネイルには即時繁栄されないので一旦コピペ。
ただ手持ち mp4 の中には正しくない情報が出るものもあった。
ここらをもう少し調べて Y901x に適用し。。。。。

しまった、Y901x は Gjs で作っていたんだった!
JavaScript はバイナリ編集なんてできないぞ。
GLib を使っても多分 Uint8Array に変換されて劇遅になるだけだ。

ClutterImage PyGObject/Gjs | Paepoi Blog

本気で困った。
Comipoli 同様コイツも PyGObject に書き換えることになりそう。