Debian WheezyシステムでNexus 4で撮影したビデオを回転させる方法を探しています。ビデオはポートレートモードで撮影されており、それらを横向きモードに回転させたいと思います。好ましくは、回転はコマンドライン駆動です。
私は良い解決策を示唆しているいくつかの以前の質問を見つけましたが、私はそれをうまく機能させることができないようです。
最初にこの質問がありました: FFmpegでビデオを回転させる
しかし、ffmpegは時代遅れであり、avconvを使用する必要があることを示しています。この質問は、前進する方法の詳細を示しています。 https://askubuntu.com/questions/269429/how-can-i-rotate-video-by-180-degrees-with-avconv
このため、次のコマンドを使用しました。
avconv -i original.mp4 -vf "transpose=1" -codec:v libx264 -preset slow -crf 25 -codec:a copy flipped.mp4
ただし、これは骨の折れるほど遅く(最後のテストでは3分未満の映像で6時間以上かかった)、再生可能な映画にはなりません。また、Mbレート>レベル制限を示すログ出力でエラーが発生します。
ここで再エンコードに問題がありますか?ローテーションを適用する前に、まず携帯電話から別のより「実行可能な」エンコードにビデオを再エンコードする必要がありますか?または、別の重要なポイントがありませんか?
フラグを考慮しているメディアプレーヤーがファイルを回転させて再生するようにメタデータを変更する場合は、次のようにしてください。
ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=90 output.mp4
見つかったとおり stackoverflowの他の場所 。
Rotation = 0で問題が修正されました。ポートレートモードでビデオの録画を開始し、ミスを認識し、すぐに携帯電話を横向きにして録画を続けました。私のiphoneは、ビデオ全体の肖像としてビデオをマークしていました。
ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=0 output.mp4
それを修正しました。
FFmpeg
および同様のプログラム メタデータの変更-map_metadata
オプションを使用しても。 exiftool
は、回転行列と回転フラグを読み取ることができますが、書き込むことはできません。
真のロスレス(メタデータを含む)回転を取得するために解決策が見つからなかったため、16進エディター(例 HxD )を取得し、回転したビデオファイルを分析しました。
vide
を検索して、ビデオトラックのメタデータを見つけますtrak...\tkhd
が表示されるはずです。@
記号が必要です(HEX 40)回転なし:
00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40
180°:
FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00
FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40
90°cw:
00 00 00 00 00 01 00 00 00 00 00 00 FF FF 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40
90°ccw:
00 00 00 00 FF FF 00 00 00 00 00 00 00 01 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40
必要に応じてファイルを変更します。ローテーションフラグをサポートするプレーヤーでローテーションする必要があります(現在のほとんどのプレーヤーがサポートしています)。
ビデオにステレオオーディオが含まれる場合、これは明らかに切り替えられないため、サウンドをビデオの回転(180°)に一致させたい場合は、左右のチャンネルを切り替える必要があります。
質問で触れたことはいくつかあります。
avprobe original.mp4
の出力を提供して、確認できるようにしてください。この回答は、LordNeckbeardから提供されたコメントの要約です。
次の場合を除き、再エンコードせずに回転することはできません。
これに必要な手順を正しく理解するには、まずこの質問を読むか、少なくともこの質問をざっと読む必要があります。
ffmpeg、libav、avconvの違いと類似点は何ですか?
概要:avconvはffmpegのフォークです。debianのメンテナーはavconvを選択しました。ソースから正しいffmpegをコンパイルする必要があります。
次のステップでは、ソースから正しいffmpegをコンパイルします。詳細は次のとおりです。
最後のステップは、他の投稿にあるコマンドを使用することです。
FFmpegでビデオを180°(垂直/逆さまに)反転するには? または FFmpegでビデオを回転
要約:ffmpeg -vfilters "rotate = 90" -i input.mp4 output.mp4