如何将输入颜色设置为与视频大小相同的大小?

问题描述

我有许多不同宽度和高度的视频,我需要在这些视频上叠加随机颜色。而且我不知道如何将颜色输入的大小设置为与我所有视频的大小相同...

确切的颜色大小仅适用于具有相同大小的视频。但是当队列进入另一个宽度和高度不同的视频时,错误就会弹出。

enter image description here

for %%i in (*.mp4) do ffmpeg /
-i "%%i" -f lavfi -i "color=random@1:s=624x1110" /
-hide_banner -y -c:v libx264 -preset slow /
-filter_complex /
"[0:v]setsar=sar=1/1[ckout]; /
 [ckout][1:v]blend=shortest=1:all_mode=overlay:all_opacity=0.05[out]" -map "[out]" "output/%%~ni.mp4"

解决方法

使用 scale2ref 过滤器,

ffmpeg /
-i "%%i" -f lavfi -i "color=random@1:s=32x32" /
-hide_banner -y -c:v libx264 -preset slow /
-filter_complex /
"[0:v]setsar=sar=1/1[ckout];[1][ckout]scale2ref[clr][ckout]; /
 [ckout][clr]blend=shortest=1:all_mode=overlay:all_opacity=0.05[out]" -map "[out]" "output/%%~ni.mp4"

或者,只需使用 drawbox 过滤器。

ffmpeg -i "%%i" -hide_banner -y -c:v libx264 -preset slow /
-vf "setsar=1,drawbox=t=fill:c=random@0.05" "output/%%~ni.mp4"