web-dev-qa-db-ja.com

別のビデオとマージする前に、アルファチャネルを使用してビデオをテストするにはどうすればよいですか?

特定の位置でバックグラウンドビデオとマージされるアルファチャネルを備えたビデオに取り組んでいます(たとえば、[100,100])。これは、次を使用して実行できます。

ffmpeg -i BACK -i OVER -filter_complex [0] [1] overlay = 100:100 OUTPUT

しかし、ビデオ全体を生成して再生することなく、結果をテストしたいと思います。

私は[〜#〜] vlc [〜#〜]を試しましたが、その唯一のオーバーレイオプションは、画像(アニメーション化されていない)を上に置くことです。ビデオ。 MPC-HCに自分に合ったシェーダーがあるかどうかはわかりませんが、(そして最も単純なシェーダーでさえ)見つかりませんでした。 、通常はCPUを要求します)。同じことがavisynthでも起こります:演奏はぎくしゃくしていて、さらに悪いことを求めています(avisynth非圧縮ビデオを処理して出力します)。

結果のビデオをオンザフライで視聴し、その任意のポイントにジャンプして、適度な量のCPUを使用する方法はありますか?

2
cdlvcdlv

私は自分自身に答えます:

私は関連する質問を見つけました、そして私は私ができると思いました パイプ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

1
cdlvcdlv

断片化されたMP4を生成すると、エンコードされているビデオを表示できます。ファイルのロード時にすでにエンコードされているポイントまでしかシークできません。したがって、さらに検索したい場合は、後でリロードしてください。

基本的な構文は

ffmpeg -i input -<encoding parameters> -movflags +frag_keyframe+separate_moof+omit_tfhd_offset+empty_moov out.mp4
1
Gyan