ffmpegを使用したビデオの最初の30秒間にロゴを追加するにはどうすればよいですか?


9

ffmpegを使用したビデオの最初の30秒間にロゴを追加しようとしています。というビデオd1.mp4とというロゴがありlogo.pngます。

ビデオが開始すると、透かしはビデオの左上または右上にあり、30秒後に消えます。

追加方法を教えてください。


..私のビデオ名がd1.mp4で、私のロゴ名がlogo.pngです、ありがとう
iwocan

次に何がffmpeg -i d1.mp4 -i logo.png表示されますか?そのコマンドを入力して、出力を確認してください。について質問するときffmpegは、所有しているビデオ/オーディオマテリアル、すでに試行したもの、試行したすべての完全なコマンドライン出力について、できるだけ多くの詳細を常に含める必要があります。
slhck 2013

これが私のcmd画面に表示されるものです。 pastebin.com/bPCnhXh2
iwocan

回答:


13
ffmpeg -i in.mp4 -framerate 30000/1001 -loop 1 -i logo.png -filter_complex
  "[1:v] fade=out:st=30:d=1:alpha=1 [ov]; [0:v][ov] overlay=10:10 [v]" -map "[v]"
  -map 0:a -c:v libx264 -c:a copy -shortest out.mp4

これは、ロゴがアルファチャネルを持つ単一の静止画像であり、フレームレート30000/1001(NTSCレート)のビデオの上にオーバーレイすることを想定しています。-framerate入力ビデオが異なる場合は、それに合わせて変更してください。ロゴが動画の場合は省略してください-framerate 30000/1001 -loop 1。ロゴにアルファチャネルがない場合は、たとえばformat=yuva420p,直前に挿入して追加しfadeます。

これにより、ロゴがx、y位置10、10に30秒間表示され、その後1秒間フェードアウトします。


1
とても興味深い!framerateloopがこの場合に必要であり、フェードフィルターのない単純なオーバーレイには必要ではない理由を説明できますか?
Rajib

...私のためにあなたに非常に多くのmark40をありがとうしかし、私はこのコードを書くとき、CMD画面は停止しません..私はなぜ知らないが、それdidntの仕事
iwocan

こんにちは、LordNeckbeard、これはスクリーンショットです。.u1312.hizliresim.com
1j/

1
@iwocan Windowsプロンプトからコピーできると思います。私はあなたがそれを行う方法を検索すると仮定しましたが、Windowsコマンドプロンプトからクリップボードにコピーするを見てください。
llogan 2013

4
@Rajib:-framerate-loop静止画像の理由は、フェードアウトが機能するようにするためです。フレームが1つしかない場合、1秒間隔でフェードアウトすることはできません。フェードができるだけスムーズになるように、理想的にはビデオと同じフレームレートにする必要があります。
mark4o 2013

19

overlayビデオフィルターを使用してロゴをビデオに追加する:

ここに画像の説明を入力してください

ffmpeg -i video.mp4 -i logo.png -filter_complex "[0:v][1:v]overlay" \
-codec:a copy out.mp4

このコマンドを理解するには、ストリーム指定子が何であるかを知る必要があり、FFmpegフィルタリング概要を読むと役立ちます。[0:v]最初の入力(video.mp4[1:v]のビデオストリームを指し、2番目の入力(logo.mp4)のビデオストリームを指します。これはoverlay、使用する入力を判別する方法です。あなたは省略することができ[0:v][1:v]、そしてoverlay、まだ動作しますが、おそらく、未知のデフォルトに依存明示していないことをお勧めします。

デフォルトでは、ロゴは左上に配置されます。

を使用-codec:a copyすると、オーディオがストリームコピーされます。これは、オーディオを再エンコードするのではなく、単にオーディオを再多重化します。オーディオの「コピーアンドペースト」と考えてください。

ロゴを移動する

この例では、ロゴを右に10ピクセル、下に10ピクセル移動します。 ここに画像の説明を入力してください

ffmpeg -i video.mp4 -i logo.png -filter_complex "[0:v][1:v]overlay=10:10" \
-codec:a copy out.mp4

この例では、ロゴを右側から10ピクセル、下から10ピクセル移動します。

ここに画像の説明を入力してください

ffmpeg -i video.mp4 -i logo.png -filter_complex \
"[0:v][1:v]overlay=main_w-overlay_w-10:10" -codec:a copy out.mp4

main_w「メイン」入力の幅(背景または[0:v])をoverlay_w参照し、「オーバーレイ」入力(ロゴまたは[1:v])の幅を参照します。したがって、例では、これはoverlay=320-90-10:10またはに翻訳できますoverlay=220:10

オーバーレイのタイミング

一部のフィルターはタイムライン編集を処理できるため、算術式を使用してフィルターをいつ適用するかを決定できます。ffmpeg -filtersタイムライン編集をサポートするフィルターを確認するには、を参照してください。

この例では、30秒までロゴが表示されます。

ffmpeg -i video.mp4 -i logo.png -filter_complex \
"[0:v][1:v]overlay=10:10:enable=between(t\,0\,30)" -codec:a copy out.mp4

ロゴをフェードインする場合は、mark4oの回答を参照してください。


どうもありがとうございました!:)私は再び私の壊れた英語をお詫び申し上げます。このコマンドは完璧に動作します!:)
iwocan 2013

やっと理解できる!最後よりも最初に表示するために何を使用すればよいですか?
cikatomo 2015年

私は最初と最後に現れるつもりですか?二度。enable = between(t \、0 \、30):enable = between(t \、50 \、60)を
試し

@cikatomo enable=not(between'(t,30,50)')。これにより、オーバーレイが常に表示されますが、30〜60秒の期間では表示されません。
llogan 2015年

パーフェクト、ありがとう。overlay単独ですべてを使用しないようにというあなたの警告にもかかわらず、左上のデフォルトの位置が私が欲しかったものだったので、私はそうしました。(結局のところ、私の旗は単にfilter_complex overlayでした。)
felwithe
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.