iPhoneからキャプチャしたビデオをアプリにアップロードしようとすると、サーバーは.movから.mp4への変換を実行して、他のプラットフォームで再生できるようにします。ただし、問題は、ビデオを(縦向きで)撮影し、変換して(ffmpegを使用して)サーバーから再生すると、回転しているように見えることです。何か案が?
10 に答える
FFMPEG は、2015 年に回転メタデータを使用してビデオ ソースを自動回転するようにデフォルトの動作を変更しました。これは v2.7 としてリリースされました。
ffmpeg のバージョンが v2.7 以降であるにもかかわらず、ローテーション メタデータが考慮されていない場合、問題はメタデータに基づくカスタム ローテーションを使用している可能性があります。これにより、同じロジックが 2 回適用され、回転が変更またはキャンセルされます。
カスタム回転を削除する (推奨) に加えて、 で自動回転をオフにするオプションがあります-noautorotate
。
ffmpeg -noautorotate -i input.mp4
...
これは、一部の古いリリースでも機能します。
完全を期すために、これが発生している理由は、iPhoneが実際に1つの固定方向でのみビデオをキャプチャするためです。測定された向きは、Apple固有のメタデータに記録されます。
その結果、Quicktime Playerはメタデータを読み取り、再生中にビデオを正しい方向に回転させますが、他のソフトウェア(VLCなど)はそうではなく、実際のコーデックデータで方向付けられているように表示します。
This is why rotate=90
(or vflip
, or transpose
, or etc.) will work for some people, but not others. Depending on how the camera is held during recording, the rotation necessary could be 90, 180, or even 270 degrees. Without reading the metadata, you're just guessing at how much rotation is necessary and the change that fixes one video will fail for another.
また、回転時に QuickTime 固有のメタデータを削除することもできます.mov
。これにより、ビデオが VLC と QuickTime で同じように回転されます。
ffmpeg -i in.mov -vf "transpose=1" -metadata:s:v:0 rotate=0 out.mov
-metadata
オプションに関するドキュメントは次のとおりです( http://ffmpeg.org/ffmpeg.htmlから):
-metadata[:metadata_specifier] key=value (output,per-metadata)
メタデータのキーと値のペアを設定します。
オプションの metadata_specifier を指定して、ストリームまたはチャプターにメタデータを設定できます。詳細については、-map_metadata のドキュメントを参照してください。
このオプションは、-map_metadata で設定されたメタデータを上書きします。空の値を使用してメタデータを削除することもできます。
たとえば、出力ファイルにタイトルを設定するには、次のようにします。
ffmpeg -i in.avi -metadata title="my title" out.flv
最初のオーディオ ストリームの言語を設定するには:
ffmpeg -i INPUT -metadata:s:a:1 language=eng OUTPUT
使用しているffmpegのバージョンとコンパイル方法に応じて、次のいずれかが機能するはずです...
ffmpeg -vf "transpose=1" -i input.mov output.mp4
...また...
ffmpeg -vfilters "rotate=90" -i input.mov output.mp4
vflipフィルターを使用する
ffmpeg -i input.mov -vf "vflip" output.mp4
Rotate が機能せず、transpose=1で 90 度回転していた
iPhone から縦向きのビデオを Web ページに含めるために、.mp4 ファイルを縦向きに表示するための次のレシピを発見しました。
ステップ 1: QuickTime Player で、ファイルを 480p にエクスポートします (720p または 1080p も同様に機能すると思います)。再び .mov ファイルを取得します。
ステップ 2: QT Player で新しいファイルを取得し、「iPad、iPhone…」にエクスポートします。.m4v ファイルを取得します。
ステップ 3: 私は Miro Video Converter を使用していますが、.mp4 ファイルを取得するために、おそらくすぐに入手できるコンバーターを使用できます。
(長ったらしい)魅力のように機能します。