特定の位置でバックグラウンドビデオとマージされるアルファチャネルを備えたビデオに取り組んでいます(たとえば、[100,100])。これは、次を使用して実行できます。
ffmpeg -i BACK -i OVER -filter_complex [0] [1] overlay = 100:100 OUTPUT
しかし、ビデオ全体を生成して再生することなく、結果をテストしたいと思います。
私は[〜#〜] vlc [〜#〜]を試しましたが、その唯一のオーバーレイオプションは、画像(アニメーション化されていない)を上に置くことです。ビデオ。 MPC-HCに自分に合ったシェーダーがあるかどうかはわかりませんが、(そして最も単純なシェーダーでさえ)見つかりませんでした。 、通常はCPUを要求します)。同じことがavisynthでも起こります:演奏はぎくしゃくしていて、さらに悪いことを求めています(avisynth非圧縮ビデオを処理して出力します)。
結果のビデオをオンザフライで視聴し、その任意のポイントにジャンプして、適度な量のCPUを使用する方法はありますか?
私は自分自身に答えます:
私は関連する質問を見つけました、そして私は私ができると思いました パイプffmpegからffplay 。部分的には機能しますが(マージされたビデオを見ることができます)、シークすることはできません(CPUを詰まらせます)。
ffmpeg -i BACKGROUND -i OVERLAY -filter_complex [0][1]overlay=100:100 -f matroska - | ffplay -
しかし、私はffplayが使用できるとは思っていませんでしたが、ffplay1つの-i
オプションのみを受け入れ、ffmpegフィルターを修正し、movie
フィルターに出くわしました(ほとんど使用されていませんffmpeg複数の-i
オプションを追加できるため)、これは入力を追加する方法を提供します。いくつかのテストの後、私は自分がやりたいことをすることができました:
ffplay -i BACKGROUND -vf "movie=OVERLAY[ov]; [in][ov]overlay=100:100"
(Windowsを使用していて、OVERLAY
がスペース付きの名前である場合は、''
で囲むことができます。)
このコマンドラインを使用すると、目立った追加のCPUを使用せずに結果のビデオを探すことができます(画像を右クリックするだけで、幅の一部に対応するファイル内のパーセンテージに移動します)。
プラスは、ffmpegを使用した最終エンコーディングでいくつかの追加オプションが必要な場合、それらはによって理解されない可能性があることです。 ffplay。
断片化されたMP4を生成すると、エンコードされているビデオを表示できます。ファイルのロード時にすでにエンコードされているポイントまでしかシークできません。したがって、さらに検索したい場合は、後でリロードしてください。
基本的な構文は
ffmpeg -i input -<encoding parameters> -movflags +frag_keyframe+separate_moof+omit_tfhd_offset+empty_moov out.mp4