web-dev-qa-db-ja.com

MP4を回転し、サイズを変更します

私のAndroid電話で撮影されたMP4ビデオがありますが、男は私の電話を奇妙な方法で持って撮影しました。

QuickTimeで表示する場合、ラップトップを90度回転させる必要があります。そうすると、通常のワイドスクリーンビデオとして表示され、すべてが良好に見えます。

VLCでは、ビデオはすでに適切なサイズのワイドスクリーンですが、逆さまになっているため、ラップトップを逆さまにする必要があります。

それをiMovieにインポートしたとき、90度回転させて右側を上にしましたが、ビデオは押しつぶされ、それでも背が高く、幅が広くなりました。

何が起こっているのかわかりませんが、どうすればワイドスクリーンで右側を上にすることができますか?

3
ThingWings

MP4ファイルにはrotateフラグを付けることができます。これは、実際のビデオビットストリームのエンコードと方向付けの方法を変更せずに、再生中にビデオを回転するようにプレーヤーに指示します。バージョン 2.2. 以降、VLCはこのフラグをサポートします。

問題は、ビデオで何をしたいのかということです。基本的に2つの選択肢があります。

  • そのままにして、回転フラグを外します。後でビデオを編集する場合は、使用するプログラムでビデオを反転します。それをプレイしたい場合は、オンザフライローテーションをサポートするプレーヤーを選択してください。
  • ビデオが適切な方向になるように、ビデオを回転してトランスコードします。ただし、これによりビデオ品質が少し低下します。

ffmpegですべてを行うことができます。 静的ビルドをダウンロード オペレーティングシステム用に、ディレクトリに抽出します。例: ffmpeg実行可能ファイルが~/Downloadsにあるようにします。次に、ターミナルウィンドウを開き、上記のディレクトリに移動します。

cd ~/Downloads
./ffmpeg

これにより、ffmpegバイナリが実行されます。詳細については、 ffmpegに関するブログ記事 をお読みください。


使用できる実際のコマンドは次のとおりです。実際のビデオビットストリームを保持してローテーションフラグを削除する場合は、最初のビデオストリームv:0のメタデータを削除し、ビデオとオーディオのビットストリーム(-c copy)をコピーするだけです。

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

ビデオを180°反転させてトランスコードする場合は、ビデオエンコーダー(ここではlibx264)と反転フィルターを指定する必要があります。オーディオストリームがコピーされます。

ffmpeg -i input.mp4 -c:v libx264 -crf 23 -filter:v "hflip,vflip" -c:a copy output.mp4

CRF( Constant Rate Factor )を調整して、ビデオの品質を変更できます。正常な値は、入力品質に応じて18〜28の範囲です。低いほど品質が高くなるため、ビデオの外観が元のビデオよりも悪くなる場合は、CRF値を低くしてみてください。

8
slhck