再エンコードせずにMP4ビデオを回転させます
-
21-12-2019 - |
質問
私のDebian whezy sytemにあるNexus 4と撮影したビデオを回転させる方法を探しています。動画は肖像モードで撮影されています、そして私はそれらを横切るモードに回転させたいです。好ましくは回転はコマンドライン駆動源である。
私は良い解決策でヒントしている以前のいくつかの質問を見つけましたが、それを働くことができないようです。
この質問がありました: ffmpeg
しかし、FFMPEGが古く、AVCONVを使用する必要があることを示しています。私はこの質問を見つけるための方法を詳述しました。 https://askubuntu.com/questions/269429/ HOW-i-rotate-video-by-180-gite-with-avconv
avconv -i original.mp4 -vf "transpose=1" -codec:v libx264 -preset slow -crf 25 -codec:a copy flipped.mp4
.
解決
Metadataを変更したい場合に、フラグが回転するファイルを再生するようなメディアプレイヤーが回転させるようにしてください。
ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=90 output.mp4
.
href="https://stackoverflow.com/a/19336581"> stackOverflow 。
他のヒント
回転= 0私の問題を修正しました。私はポートレートモードでビデオを録音し始め、私の間違いを実現し、すぐに私の携帯電話を撮影を続けてください。私のiPhoneはビデオ全体の肖像としてビデオをマークしました。
ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=0 output.mp4
.
それを固定しました。
FFmpeg
と同様のプログラムメタデータを変更する -map_metadata
オプションでも。 exiftool
は回転行列と回転フラグを読み取ることができ、バージョン10.89も以下の説明のようにそれを書き込むことができます。
真実の無損失(メタデータ)の回転を得るために、私は解決策を見つけることができなかったので、私は16進編集者をつかみました(例えば、 HXD )および回転したビデオファイルを分析しました。
MP4の真の無損失回転:
- HEXエディタでMP4を開き、
vide
を検索してビデオトラックのメタデータを見つける - 上記の行(私のファイルのために最も9、時には12)の
trak...\tkhd
を見るべきです。
- は、
@
記号(Hex 40) がある必要があります。
- 回転行列が保存される前の2行の
-
回転なし:
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°)と一致する場合は、左右のチャンネルを切り替える必要があります。
あなたの質問に触れたことがいくつかあります:
- 再符号をしながら回転できる可能性がほとんどありません。その規則(MJPEGコーデック)の例外はすでに指摘されていますが、それを使用しているのはほとんどありませんので、この質問の範囲を超えています。この能力の理由は、JPEGをメタデータを介して変換できることを説明します。したがって、メタデータの回転を持つコンテナを見つけることができると、これまでに存在しない(または幅が広く広がっています)。
- ビデオの3分間回転させて再象徴するのに時間がかかった場合、問題は巨大解像度にあることができます。そして私は巨大を意味します!
avprobe original.mp4
の出力を確認できるようにしてください。 - libav対ffmpegの議論は非常に生産的です(あなたはすでにここに掲載されたFUDの量によってそれを見ることができます)。基本的に何が起こったのかは、いくつかの開発者が一方の方法で行われたプロジェクトの分割であり、FFMPEGプロジェクトが名前を維持することができたという事実は単なるフローークであり、それは1つのプロジェクトの原稿と別のフォークを呼び出すことは意味がありません。プロジェクト間の違いは主に開発スタイルと哲学にあります。よりフリーソフトウェアとしてのよりオープンソースとライバップとしてFFMPEGを特徴付ける場合は、誤っていることすべてではありません。合理的な人々は最終的に開発者が彼らの感覚に来ることを願っています、そして、プロジェクトをマージしないかもしれませんが、それほど協力します。 Ubuntuが元々出てきたとき、すべてのDebian GNU / Linuxチャットでは、「UbuntuはDebunではありません。もう一つの
この答えは、SprimeNeckBeardによって提供されるコメントの概要です。
エンコードなしで回転
再符号化なしの回転はできない限り:
- あなたの入力はmjpeg です
- 再生時に回転
正しいFFMPEG
を用いて符号化で回転するこれに必要な手順を正しく理解するには、この質問を読んでいるか、少なくともスキミングすることから始めるべきです:
ffmpeg、libav、およびavconvの違いと類似点は何ですか?
概要:AVConvはFFMPEGのフォークです、Debian MausterはAVConvを選択し、ソースから正しいFFMPEGをコンパイルする必要があります。
次のステップは、ここに詳述されているように、正しいFFMPEGをソースからコンパイルすることです:
FFMPEGでビデオを弾く方法(垂直/上下) または ffmpeg
概要:ffmpeg -vfilters "Rotate= 90" -i Input.mp4 Output.mp4