2012-06-07 38 views
10

元のビデオに比例して高さが常に変化するように、ビデオが常に512幅になるようにビデオを拡大しようとしています。 縮尺を変更したら、ビデオにウォーターマーク/オーバーレイを適用したいので、ビデオは拡大縮小されますが、ウォーターマークは表示されません。FFmpeg - ビデオを拡大縮小してウォーターマークを適用する方法は?

は、私は別に、次のフィルタを使用して、これらのそれぞれを達成することができる午前:

スケール

-vf "scale=512:-1" 

透かしが

-vf "movie=watermark.png [watermark]; [in][watermark] overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2 [out]" 

は彼らが自分で正常に動作します。

しかし、2つを組み合わせようとすると、少し問題があります。

もちろん両方のパラメータを使用すると、他のパラメータよりも優先されるため、機能しません。

-vf "scale=512:-1,movie=watermark.png [watermark]; [in][watermark] overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2 [out]" 

私の考えは、スケールは透かしが最初に適用されるだろうということでしたが、私が得るすべては

あまりにも多くの入力が「映画」フィルタに指定されたエラーです:

アイブは試してみました。

フィルタを開く際にエラーが発生しました。

次に、をaに変更します。結果:

単純なfiltergraph 'scale = 512:-1; movie = watermark.png [透かし]; overlay =(main_w-overlay_w)/ 2 :(main_h-overlay_h)/ 2 [out] 'は、入力と出力がちょうど1つではなく、 です。

フィルタを開く際にエラーが発生しました。

私はフィルターチェーンでもっと何かをする必要がありますが、私はそれを理解するのに苦労しています。

事前に感謝します。

+2

プログラミング関連ではありません - http://superuser.comをお試しください。 –

+0

透かし画像を最初にスケールし、スケールビデオに適用した方が良いと思います。 2つのプロセスの間でパイプを実行しようとすることができます。 –

答えて

14

@DiJuMxと@LordNeckbeardの両方に感謝しますと、私はどちらも私のソリューションに近づきました。 filter_complexオプションはまだ試していませんが、もっと簡単に見えます。私は仕事に見つかっ

解決策は以下のとおりです。

-vf "movie=watermark.png [watermark]; [in]scale=512:trunc(ow/a/2)*2 [scale]; [scale][watermark] overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2 [out]" 

注アイブ氏が交換することを-1をスケールでどのスケーリングたときには、ビデオの高さの画素数が奇数を引き起こす可能性があったとして、エンコーディングエラーが発生します。

16

あなたは規模やオーバーレイフィルタを-filter_complexオプションを使用することができます。

ffmpeg -i input.mp4 -i logo.png -filter_complex "[0:v]scale=512:-1[bg];[bg][1:v]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2" output 
  • は、詳細はscaleoverlayフィルタのマニュアルを参照してください。
  • 他の例のようにソースフィルタを必要としません。
  • 元のオーディオを再エンコードする代わりにstream copy(再ミュート)したい場合は、-c:a copyを追加できます。これは、入力と出力のコンテナ形式が同じ場合に便利です。
  • この例では、ロゴが中央に配置されます。他の配置オプションの場合:overlay=W-w-10:10
  • 右下10ピクセルのパディングを持つ:10ピクセルのパディングとoverlay=10:10
  • 右上:
    • アッパーは、10ピクセルのパディングを残しoverlay=W-w-10:H-h-10
    • を下げるには10ピクセルのパディングを左: overlay=H-h-10:10
0

私が理解から、これはうまくいくかもしれない:

-vf "movie=watermark.png [watermark]; [in] scale=512:-1,[watermark] overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2 [out]" 

"[入力]"入力にスケールフィルタを適用します。

残念ながら、私はffmpegのフィルタに多くの経験がありませんので、私はさらに助けません。申し訳ありません

関連する問題