質問: iphoneで録画されたビデオがwindowsシステムでローテーションされる iphoneでビデオを録画し、linuxサーバーにアップロードしています。ユーザーはこれらのビデオをウェブサイトで見ることができます。ユーザーがmacまたはidevicesでビデオを見ている場合、ビデオは正常に見えますが、ユーザーがwindowsシステムでそのビデオを見ている場合、これらのビデオは回転しています。これは、windowsシステムが読み取れない録画ビデオ内のappleのフラグが原因であると推測しています。 windowsシステムでローテーションされないように、何らかの方法でビデオを録画できますか?または、ffmpegを使用して適切なインターフェイスの向きでビデオを再エンコードする方法はありますか?私はffmpegまたはiosの両方の方法を受け入れています。
回答: iosカメラがビデオを記録する方法を変更することはできません。回転フラグを設定します。osxとwindows(および他のプレーヤー)の両方でビデオを正しく表示するには、次のことを行う必要があります。 回転フラグを削除します。これで、ビデオは横向きになりましたが、それでも間違って表示されています。 ビデオを再エンコードして回転させます。 ffmpegをダウンロード (osの静的ビルドで問題ありません)。次に、 transpose フィルターが必要です。例:.ffmpeg -i portrait.mov \ -c:v libx264 -filter:v "transpose=1" \ -c:a copy \ -metadata:s:v:0 rotate=0 out.mp4 いくつかの注意: ここで、transpose=1は90°回転します。ビデオが逆さまになっている場合は、オプションを組み合わせる必要があります。 -filter:v "transpose=2,transpose=2"またはその他を使用できます。ここを参照してください: ffmpegでビデオを180°(垂直/逆さま)反転する方法は? -metadata:s:v:0 rotate=0オプションを使用すると、最初のビデオストリームの回転メタデータが再び0に設定され(以前は90でした)、osxと他のosの両方でビデオが正常に表示されるようになります。 当然、移調するとビデオが再エンコードされ、品質が低下します。 -crfの後に-c:v libx264オプションを追加して、品質を制御する 一定レート係数 を設定します。より良い品質を得るには、より低い値を使用してください。 23は実際にはデフォルトであるため、指定する必要はまったくありませんが、-c:v libx264 -crf 18のように、ビデオの見栄えが悪くなる場合は、18程度の低いものを選択することをお勧めします。 場合によっては、回転フラグを削除して、元のビデオビットストリームをそのままにしておきたいことがあります。これを行うには、-c:v libx264 -filter:v "transpose=1"を-c:v copyに置き換えます。 詳細については、 x264エンコーディングガイド を確認してください。