iPhone/iPadで撮影した動画.MOVの回転をあれこれ

最近5年くらいのアップル製品にはたいていカメラが付いています。
iPhone、iPad、iPod touch、迷走したiPod nano、iMac、Macbookあたりか。
なぜか理由はわからないけれどこれらのデバイスで動画撮影するとQuickTimeフォーマット(.MOV)で映像音声圧縮ストリームが多重化、収納されている。アップルが提供しているコンテンツ販売iTunes StoreではMPEG4フォーマットで販売頒布しているのに!
家庭用デジタルビデオカメラ業界でもメーカーによってM2TSフォーマット、MPEG4フォーマット、マトリョシカフォーマットなどなどいろいろあります。映像圧縮にはたいていH264/AVCが使われているのでどれでもいいんですが、リニアPCM、AACLC、ドルビーデジタル、ALAC、などなど音声圧縮との相性で解が変わってきます。余談でした。
本題です。
iPhoneで撮影した動画ファイルには以下のようなメタデータが記録されています。
  • 時刻
  • 位置情報
  • カメラメーカー
  • カメラのモデル
  • カメラの回転角度
いわゆるタテ撮りした動画は実際にはヨコ撮りされていて、メタデータに90度だとか270度と記録されている情報をもとに再生時に回転させてタテ再生しているわけです。ですからそのメタデータを消せばヨコ撮りにできますし、逆に角度のメタデータを追加変更してやれば対応している再生プレイヤーでは自由自在に回転表示できます。
YouTubeではこのメタデータを忠実に読みます。ですから1080だとか720という定格解像度やそれがもたらす高ビットレートだとかYUV420サンプリングの特性を考えるとタテ撮りファイルをYouTubeにアップロードしてWEB画面からヨコ向きに回転させるより、アップロードする時点で回転情報なしにしたほうがいいのでは?と私は思うのです。
AVC+AACですので下記のようにffmpegを使うことで回転情報を0度にオーバーライド上書き再定義ができます
-c copyで全ストリームが再圧縮されることなく完全コピーされます。したがって再圧縮といった高負荷処理はおこなわれません。あっという間に終わるでしょう。またVFRのための情報もコピーされるため音ズレは発生しません。

ffmpeg -i %1 -f ffmetadata "%~dpn1.txt"

ffmpeg -i "%~dpn1.txt" -i %1 -c copy -metadata:s:v:0 rotate=0 "%~dpn1-mod.MOV"

どうやらこうやってもいくつかのメタデータはロストしてしまうようです。

復元できたメタデータは
  • 撮影日時
  • カメラメーカー
  • カメラモデル
  • (GPS情報は普段記録してないので未検証です)

ロストしたデータは
  • iOSのバージョン

角度の基準点は実際に記録されている映像ストリームからです。また時計回りです。以上、自分が知りたくて検索して出てきた英語ページをもとに日本語圏向けに書いてみた。おわり。


コメント

非公開コメント