web-dev-qa-db-ja.com

Ubuntuを使用してビデオファイルを90度回転する

Ubuntuと、できればffmpegなどの標準パッケージを使用して、.3gpビデオファイルを任意の方向に90度回転したいと思います。できればコマンドラインまたはPythonスクリプト。

どうやってやるの?

20
justinhj

[〜#〜] vlc [〜#〜] を使用すると、[ツール] >> [設定...]に移動してビデオを回転できます。

ショーの設定で「すべて」を選択します。次に移動します:ビデオ>>フィルター>>回転

必要な次数を設定したら、[ツール]> [効果とフィルタ]> [ビデオ効果]> [ジオメトリ]に移動して回転できます。

alt text

私がテストしたのはmp4ですが、 [〜#〜] vlc [〜#〜] は3gpもサポートできると思います。お役に立てれば。 :)

9
Ye Lin Aung

コマンドラインから、ffmpegを使用:

ffmpeg -i input.3gp -filter:v transpose=1 \
-c:v libx264 -preset veryfast -crf 22 \
-c:a copy \
-metadata:s:v rotate="" \
output.3gp
  • transpose=1はビデオを時計回りに90度回転します。反時計回りに回転するには、transpose=2を使用します。詳細については、 transposeのドキュメント を参照してください。

  • -metadata:s:v rotate=""は、既存のビデオストリームローテーションメタデータをすべて削除します。そうでない場合、ffmpegはそれをコピーし、プレーヤーに不要なローテーションを追加させる可能性があります。

  • こちらのビデオエンコーディング設定の詳細については、 このH.264エンコーディングガイドAACエンコーディングガイドストリームコピー の代わりにオーディオを再エンコードする場合。

18
evilsoup

Avidemux がこれを実行できるはずです。

Video->Filters->Rotate(x degrees)->Closeを実行してからFile->Save->Save Video

4
Nifle

この質問が最初に回答されたときから、libavにいくつかの変更が加えられています。これを最新かつ有用な状態に保つために、以下を提供します。

転置ビデオフィルターを使用して、ffmpegおよびavconvの最近のバージョンでこれを実現できます。

avconv -i inputfile -vf transpose=clock outputfile

時計回りの回転。

ffmpegの構文は同じです。

ffmpeg -i inputfile -vf transpose=clock outputfile

ここで、inputfileはサポートされている入力ビデオファイルで、outputfileは必要な出力ですファイル。

反時計回りに回転するには、clockcclockに置き換えます

ドキュメントからの抜粋です:

‘cclock_flip’

    Rotate by 90 degrees counterclockwise and vertically flip. (default)
‘clock’

    Rotate by 90 degrees clockwise.
‘cclock’

    Rotate by 90 degrees counterclockwise.
‘clock_flip’

    Rotate by 90 degrees clockwise and vertically flip. 

出典:

https://libav.org/avconv.html#transpose

https://ffmpeg.org/ffmpeg-filters.html#transpose-1

Ubuntu 14.04.5 LTS、Ubuntu 16.04、Ubuntu 18.04でのテスト

2
Elder Geek

私は同様の問題を解決しました。正しい設定にしたい.MOVを逆さまに(つまり、180度回転して)撮影しました。

私のUbuntu 14.04システムでは、avconvに対して evilsoup's answer で指定されたものと基本的に同じコマンドラインオプションを使用してffmpegを実行しました。どうやら、180度回転のtransposeオプションをサポートしていないので、時計回りに90度(つまり、transpose=1)2回。

最小限のオプションを試したところ、次のようなメッセージが表示されました。

encoder 'aac' is experimental and might produce bad results.

Add '-strict experimental' if you want to use it.

出力ファイルの長さがゼロだったので、-strict experimental

機能したコマンドラインは次のとおりです。

avconv -i IMG_orignl.MOV -filter:v 'transpose=1' -strict experimental IMG_interm.MOV
avconv -i IMG_interm.MOV -filter:v 'transpose=1' -strict experimental IMG_result.MOV

結果は満足のいくもので、説明できない副作用がありました:

  1. 中間ファイルは元のファイルより約14%小さくなりました。
  2. 結果ファイルは、中間ファイルより約18%小さく、元のファイルより約30%小さくなりました。
  3. 結果ファイルにはサムネイルが表示されますが、オリジナルと中間には一般的なアイコンのみが表示されます。

私が不満を言っているわけではありません。これらは望ましいです。彼らがなぜ起こったのか私には理解できません...

2
Nick Peterson