3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

mp4 の回転情報を削除する (ffmpeg)

Posted at

スマートフォンで撮影した mp4 の動画ファイルなどで、PC 上で編集しようとしたときに回転角度が間違って扱われ、出力時に動画サイズなども壊れることがあります。
これは、mp4 動画ファイル内に回転情報を扱うメタデータがあるのですが、それに対応しているアプリケーションとそうでないアプリケーションがあるからです。
そこで、ffmpeg コマンドを使用して回転情報を削除し、解決することにしました。

主に以下の記事を参考にしましたが、ここではターミナル上だけで操作することを目的とし、それに加えていくつかのコマンドのオプションを変更・追加しました。説明文も補足します。

参考「スマホで撮影した映像をffmpegで正しい向きに変換する(+縮小変換) - Qiita

1. mp4 の回転情報を確認 (ffprobe)

コマンド
ffprobe -show_streams -print_format flat input.mp4 2>/dev/null | grep '\.tags\.rotate='
出力の例
streams.stream.0.tags.rotate="270"

(ここでは出力を grep コマンドで取り出せるように出力形式を flat に変更。)

(ここで何も表示されない場合、おそらくメタデータによる回転ではないです。)

参考「4 Writers - ffprobe Documentation

ffprobe コマンドは、本質的な出力でない情報を標準エラー出力 (stderr) に出力しています。
エラーというよりログに近い内容なのですが、標準出力と分けて表示されるため、ここでは非表示にするために null デバイス /dev/null に出力しています。

2. mp4 の回転情報を削除 (ffmpeg)

コマンド
ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=0 output.mp4

前述の参考記事では -vf オプション (-filter:v のエイリアス) により FFmpeg Filters を使用して回転変換をしていますが、ここでは回転情報を削除することのみを目的として、各ストリームはコピーするだけにしました。

参考「5.4 Main options - ffmpeg Documentation
参考「5.11 Advanced options - ffmpeg Documentation」(-map_metadata)
参考「5.1 Stream specifiers - ffmpeg Documentation

-c copy で、各ストリームを再エンコードせずにコピー。
-metadata でメタデータを変更。:s でストリーム単位、:v でビデオ、:0 で初めのインデックス。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?