IPhoneからキャプチャしたビデオをアプリにアップロードしようとすると、サーバーが.movから.mp4に変換して、他のプラットフォームで再生できるようにします。ただし、問題は、ビデオを(縦向きで)撮影し、それを(ffmpegを使用して)変換し、サーバーから再生すると、回転して表示されることです。何か案が?
Ffmpegのバージョンとコンパイル方法に応じて、次のいずれかが機能します...
ffmpeg -vfilters "rotate=90" -i input.mov output.mp4
...または...
ffmpeg -vf "transpose=1" -i input.mov output.mp4
FFMPEGは、デフォルトの動作を、回転メタデータを使用してビデオソースを自動回転するように変更しました 2015年 。これはv2.7としてリリースされました。
Ffmpegのバージョンがv2.7以降で、ローテーションメタデータが尊重されていない場合は、メタデータに基づくカスタムローテーションを使用していることが問題である可能性があります。これにより、同じロジックが2回適用され、ローテーションが変更またはキャンセルされます。
カスタムローテーションの削除(推奨)に加えて、-noautorotate
で自動ローテーションをオフにするオプションがあります。
ffmpeg -noautorotate -i input.mp4
...
これは一部の古いリリースでも機能します。
また、.mov
をローテーションするときに、QuickTime固有のメタデータを削除することもできます。これにより、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
完全を期すために、これが起こっている理由は、iPhoneが実際にビデオを1つの固定された方向でのみキャプチャするためです。測定された方向は、アップル固有のメタデータに記録されます。
その結果、Quicktime Playerはメタデータを読み取り、再生中にビデオを正しい方向に回転しますが、他のソフトウェア(VLCなど)はそれを行わず、実際のコーデックデータで方向付けされたように表示します。
これが理由です rotate=90
(またはvflip
、またはtranspose
など)は、一部の人には機能しますが、他の人には機能しません。記録中のカメラの保持方法に応じて、必要な回転は90度、180度、または270度です。メタデータを読み取らずに、どれだけの回転が必要かを推測しているだけで、あるビデオを修正する変更は別のビデオでは失敗します。
vflipフィルターを使用する
ffmpeg -i input.mov -vf "vflip" output.mp4
回転が機能せず、transpose = 1が90度回転していた
だから-私もこの問題に遭遇しました、そしてここに私の$ 0.02:
1.)一部のビデオには方向/回転メタデータがあり、一部にはありません:MTS(sony AVHCD)または私が持っているAVI-方向タグがありません。 MOVとMP4(ipad/iphoneまたはsamsung galaxy note2)をお持ちください。
you can check the setting via 'exiftool -Rotation file'.
My videos often have 90 or 180 as the rotation.
2.)ffmpeg-メタページタグのあるmanページに関係なく、出力ファイルに設定されていないようです。 -rotation-tagは常に「0」です。それは出力でそれを正しく報告します-しかし、それはexiftoolによって報告される権利を決して設定しません。 -しかし、ちょっと-少なくともそれはあり、常に0です。
3.)回転角度:+/- 90回転したい場合:時計回りに90の転置= 1、180度が必要な場合は2 ccw-このフィルターを2回追加します。覚えておいてください-それはあなたが指定するフィルターチェーンです。 :-)-さらに下を参照してください。
4.)回転してからスケーリングする:これはトリッキーです-MP4出力フォーマット違反にすぐに入るからです。 1920x1080 MOVがあるとします。 90度回転すると1080x1920が得られ、-1:720-> 1080 *(720/1920)= 405 horizに再スケーリングされ、405水平は2-エラーで割り切れません。これを手動で修正します。これを自動的に修正する-シェルスクリプトの作業が少し必要です。
5.)拡大縮小して回転:この方法で実行できますが、最終的には720x1280になります。うん。ただし、ここでのフィルターの例は次のようになります。
すべてをまとめる:-注-「意図的に間違った回転タグ」、例として-表示されないAT ALLが出力に表示されます!これは入力を取ります-そしてそれを180度回転させます、それを縮小します-回転タグをリセットします-通常、iphone/ipad2は180度回転した素材を作成できます。'-metadata Rotation = x 'を行から外してください...
/ usr/bin/ffmpeg -i input-movie.mov -timestamp 2012-06-23 08:58:10 -map_metadata 0:0 -metadata Rotation = 270 -sws_flags lanczos -vcodec libx264 -x264opts me = umh -b 2600k- -vf yadif = 1、transpose = 1、transpose = 1、scale = 1280:72 -f mp4 -y output-movie.MP4
私は複数のデバイスを持っています-セットトップボックス、ipad2、note2のように、すべての入力素材(mp4、mov、MTS、AVIに関係なく)を720p mp4に変換し、今までのところすべての結果のビデオは正しく再生されます(方向、サウンド)すべての開発者に。
それが役に立てば幸い。
トピックは古いですが。これが誰かを助けることを願っています:
Ffmpegの最新バージョンを取得する: https://www.ffmpeg.org/download.html
私のために働いたコマンド(180度反転):
ffmpeg -noautorotate -i input.mp4 -filter:v "rotate=PI" output.mp4
度が-filter:v "PI/180*degrees"
によって決定されるとき
例:45度の場合は-filter:v "45*PI/180"
素敵な説明はこちら https://superuser.com/questions/578321/how-to-rotate-a-video-180-with-ffmpeg
または...既存のファイルのタグを変更するだけです:
現在の回転を読む
exiftool -Rotation <file>
次に、例えば:
exiftool -Rotation=180 <file>
180に設定する
私はIpad3でビデオを撮影しました、そしてそれは私がすべてのAppleデバイスのいくつかのバージョンでの一般的な状況だと思います。それ以外に、3分の長いMOVファイル(1920x1090)サイズが約500 Mbだったため、簡単に共有できませんでした。MP4に変換し、stackoverflowで見つけたすべてのスレッドを分析する必要がありました。これが、使用したffmpegの最終的なコード文字列です( ffmpegバージョン2.8.4):
ffmpeg -i IN.MOV -s 960x540 -metadata:s:v rotate="0" -acodec libmp3lame OUT.mp4
サイズ変更やオーディオコーデックの変更が必要ない場合は、 '-metadata:s:v rotate = "0"'のままにしておいてもかまいません。ビデオのサイズを変更すると、幅と高さが4に完全に分割されることに注意してください。
IPhoneからポートレート形式のビデオをWebページに含めるために、.mp4ファイルをポートレート表示で取得するための次のレシピを見つけました。
ステップ1:QuickTime Playerで、ファイルを480pにエクスポートします(720pまたは1080pも同様に機能すると思います)。再び.movファイルを取得します。
手順2:QT Playerで新しいファイルを取得し、「iPad、iPhone…」にエクスポートします。 .m4vファイルを取得します。
ステップ3:私はMiro Video Converterを使用していますが、.mp4ファイルを取得するために、おそらくすぐに利用できるコンバータがすべて機能します。
(長巻き)チャームのように機能します。