web-dev-qa-db-ja.com

FFmpegでビデオストリームの回転フィールドを設定できますか?

ビデオファイルがあります。 MediaInfoユーティリティで開き、Rotation 90属性(CodecID、ビットレートなどの他の属性と共に)を持つビデオストリームをこのファイルで確認できます。

これで、Rotation 90属性を持たない別のビデオファイルができました。Rotation属性はまったくありません。

Ffmpeg.exeを使用して、Rotation 90属性が追加された、その他の変更のない出力ファイルを生成できますか?実際には変換はしたくありません。回転属性を設定したいだけです。

-metadataオプションを試してみたが、役に立たなかった。

32

これは最近のFFmpegで動作します:

ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=90 output.mp4

ストリームコピー ビットストリームになるため、エンコードは実行されません。最初のビデオストリーム(v:0)のメタデータのみがここで変更され、プレーヤーは回転された方法でビデオを表示します。 (すべてのプレーヤーがこれをサポートするわけではありません。)

その他の注意事項:

  • ビデオを「物理的に」回転したい場合は、 transposeフィルターを使用 する必要があります。フィルタリングには再エンコードが必要になるため、-c copyを削除する必要があります。

  • -c copyを省略し、再多重化だけでなくエンコードする場合、既存の回転メタデータがある場合、ffmpegは自動的にビデオを回転します。この動作は-noautorotateで無効にできます。

69
slhck