ffmpeg水印前30秒

ncs*_*ncs 8 ffmpeg

ffmpeg -i v.3gp -acodec copy -vf "movie=w.png [logo]; [in][logo] overlay=10:main_h-overlay_h-10 [out]" nv.3gp
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我只需要前30秒的水印.有任何想法吗?

Dmi*_*sky 8

您可以使用png编解码器和Alpha通道将徽标转换为30秒的视频,并将视频应用为叠加层.

徽标视频的持续时间应通过主视频帧速率的帧数指定(在您的情况下,v.3pg).例如,对于30 fps主视频运行:

ffmpeg.exe -loop 1 -i w.png -vframes 901 -vf "fade=out:899:1:alpha=1" 
    -vcodec png -pix_fmt rgba w.mov
Run Code Online (Sandbox Code Playgroud)

徽标需要淡出; 否则它不会消失.然后将徽标视频用作另一个视频的叠加层:

ffmpeg -i v.3gp -acodec copy -vf "movie=w.mov [logo]; [in][logo]
    overlay=10:main_h-overlay_h-10 [out]" nv.3gp
Run Code Online (Sandbox Code Playgroud)

或者,而不是突然结束,徽标可逐渐淡出,例如在30帧内使用-vf "fade=out:870:30:alpha=1".


sen*_*nfo 6

overlay过滤器支持时间线编辑; 你可以简单地从png文件中读取然后overlay=enable='lte(t,30)':...


cue*_*oop 5

意识到它来晚了,但是当我看着一个类似的问题时,我设法解决了这个问题。从开始起以0.5秒渐弱,然后在30秒时渐弱

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
Run Code Online (Sandbox Code Playgroud)


Fel*_*Yan 0

您可以剪掉前 30 秒,为其添加水印,然后将其与剩余部分连接起来。