2012-02-06 5 views
12

FFmpegを使用して、画像またはビデオを別のビデオの上にプログラムでオーバーレイしようとしています。 AVFilterがこれを行うことができるようです。FFmpeg AVFilterプログラムによるオーバーレイ/ウォーターマーク

コマンドラインでこれを行う方法や似たような方法の例はたくさんありますが、AVFilterをプログラムで別に使用する例は見つかりませんでした。 私はすでにビデオをデコードしてエンコードすることができます。デコードされたフレームをフィルタリングしてウォーターマークを追加する方法を学ぶ必要があります。

libavfilterをプログラムで使用する例はありますか?

オーバーレイフィルタまたはムービーフィルタの使用例はありますか?

+0

コード例は、任意のフィルタを適用するように簡単に変更できます。何が問題ですか?オーバーレイとムービーフィルタを使用する例については、[FFmpegを使用してビデオに透かしを入れる方法](http://www.idude.net/index.php/how-to-watermark-a-video-using-ffmpeg)を参照してください。 –

+1

この例の問題は、オーバーロードされていることです(2つのフィルタ、フィルタグラフなど)。新しいもので、AVFilterを適用する方法を見つけたいと思っている人にとっては、開始するために絶対に必要なことを明確にしていないため、混乱しています。 –

答えて

7

コマンド:

ffmpeg –i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=10:10 [out]" outputvideo.flv 

は、左上の画像 "watermarklogo.png" で動画を作成します。別のプログラムからこのコマンドを呼び出すだけで十分です。それを理解するには少しずつこの内訳

ffmpegあなたは透かしを追加するために使用することがありますプログラムです。

-i入力ファイルの指定に使用されます。

inputvideo.aviは、-iで指定した入力ファイルです。

-vfは、ビデオフィルタを指定するために使用されます。この場合、これは引用符の中のすべてです。

movie=watermarklogo.pngは、ウォーターマークとして使用するファイルを読み込みます。ここでは、ファイルがビデオであるかどうかにかかわらず、ファイルをビデオソースとして(movieを使用して)ロードします。この場合、それはイメージです。

[watermark]は、ロードしたばかりのファイルにラベルを付けます。このラベルは、残りのコードで使用されます。

[in]および[out]は、ビデオの入力ストリームと出力ストリームを指します。

overlayは、それを参照するように[watermark]ラベルの直後に使用されています。この単純なケースでは、overlay10:10に置きます。つまり、ウォーターマークは、上端から10ピクセル左にオフセットされます。右下の場合はoverlay=main_w-overlay_w-10:main_h-overlay_h-10を使用します。ここで、main_wは入力ストリームの幅、overlay_hはオーバーレイファイルの高さなどです。

最後に、outputvideo.flvは明らかに結果を保存するファイルです。

追加情報:

私はコメントでthe site Dmitry had mentionedを通じてこの情報を見つけました。アレックスは、このページは、そのようなものに慣れていない人にとっては複雑すぎるかもしれないと言いました。しかし、私はこのようなことは一度もしていないし、ほんの数分以内に私は求められていると思った結果を得ました。

注:

error while opening encoder for output stream #0.1 

あなたは(あなたはおそらく手動で-arパラメータを使用して、サンプリング周波数を設定する必要が同じ問題を抱えている場合など-ar:私は、私はエラーを取得したトラブルの瞬間がありました22050)。

+0

透かしのタイミングを定義できますか? 00:00に透かしを開始し、@ 01:00に消えたいと言うことができますか? – rroche

+0

@rroche [this post](http://stackoverflow.com/questions/9160771/ffmpeg-watermark-first-30-second)を参照してください。フェリックスの答えはおそらく最も単純ですが、ドミトリーの答え(上記と同じドミトリー)はちょっとちょっと違っていて、透かしが消えてしまいます。 – golmschenk

+4

この質問は、FFFEGバイナリを呼び出さずにAVFilterライブラリを使用することに関連しています。 – Erik