8
ffmpeg -i v.3gp -acodec copy -vf "movie=w.png [logo]; [in][logo] overlay=10:main_h-overlay_h-10 [out]" nv.3gp

It work's fine, but i want watermark only first 30 seconds. Any ideas?

asked Feb 6, 2012 at 13:27

4 Answers 4

8

You can convert the logo into a 30 second video with png codec and alpha channel, and apply the video as overlay.

The duration of the logo video should be specified through the number of frames at the frame rate of the main video (in your case, v.3pg). For example, for 30 fps main video run:

ffmpeg.exe -loop 1 -i w.png -vframes 901 -vf "fade=out:899:1:alpha=1" 
 -vcodec png -pix_fmt rgba w.mov

The logo needs to be faded out; otherwise it will not disappear. Then use the logo video as overlay on another video:

ffmpeg -i v.3gp -acodec copy -vf "movie=w.mov [logo]; [in][logo]
 overlay=10:main_h-overlay_h-10 [out]" nv.3gp

Alternatively, rather then ending abruptly, the logo can be faded out gradually, e.g. within 30 frames using -vf "fade=out:870:30:alpha=1".

answered Feb 8, 2012 at 2:15
Sign up to request clarification or add additional context in comments.

7 Comments

Invalid value '1' for option 'loop'
And it doesn't disappear ffmpeg -i w.png -vframes 901 -vf "fade=out:870:30:alpha=1" -vcodec png -pix_fmt rgba logo.mov ffmpeg -i v.3gp -acodec copy -vf "movie=logo.mov [logo]; [in][logo] overlay=10:main_h-overlay_h-10 [out]" nv.3gp
Strange. Are you using an older ffmpeg? Try -loop-input then, or get the latest
ffmpeg -loop_input -f image2 -i w.png -vframes 901 -vf "fade=out:870:30:alpha=1" -vcodec png logo.mov // ffmpeg -i v.3gp -acodec copy -vf "movie=logo.mov [logo]; [in][logo] overlay=10:main_h-overlay_h-10 [out]" nv.3gp // it's work, but thereis no alpha, i saw black square after fadeout. If i make logo.mov without -vf everything is ok, but watermark appears whole duration.
You did not pass -pix_fmt rgba option. Also, try the latest ffmpeg.
|
7

overlay filter supports timeline editing; you can simply read from a png file and then overlay=enable='lte(t,30)':...

answered May 4, 2013 at 17:35

1 Comment

@kev What a lukewarm comment. I love it.
5

Realize it's late, but as I was looking at a similar problem I managed to solve this one. It fades in with 0.5 sec from start, then fades out at 30 sec

ffmpeg \
-i v.3gp \
-loop 1 -i w.png \
-acodec copy \
-filter_complex \
"[1:v] fade=in:st=0:d=0.5,fade=out:st=30:d=0.5 [logo]; [0:v][logo] overlay=10:main_h-overlay_h-10" \
nv.3gp
ismail
47.9k9 gold badges90 silver badges97 bronze badges
answered Jun 3, 2014 at 20:57

2 Comments

how do you avoid endless encoding loop ( caused by -loop 1 )? When on the other side I use eof_action=pass[out1] in the complex filter and map it to the output, the output has no working audio. Any ideas?
@fiveDust Try the -shortest argument (see advanced options documentation).
0

You may cut the first 30 seconds, apply watermark to it, then join it with the remaining part.

answered Feb 6, 2012 at 15:48

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.