В обновлённом ffmpeg, начиная с версии 4.1, появился новый видео фильтр
tmix – он смешивает N соседних кадров.
Для создания эффекта размытия движения, можно рендерить анимацию с частотой кадров в N раз выше, смешивать N соседних кадров, и снижать частоту обратно в N раз, просто выкидывая лишние кадры.
Скрипт примераlet WIDTH=640
let HEIGHT=480
let MID=$WIDTH/2
let BUFFER=16
let FRAMERATE=30
let XRATE=$BUFFER\*$FRAMERATE
let DURATION=8
let FPERIOD=$XRATE\*$DURATION
ffmpeg \
-filter_complex \
" \
color=white:${WIDTH}x${HEIGHT}:d=$DURATION:r=$XRATE,format=rgb24[bg]; \
color=black:8x${HEIGHT}:d=$DURATION:r=$XRATE,format=rgb24[bar]; \
[bg][bar]overlay=x='$MID + $MID * sin(8 * PI * n / $FPERIOD)':y=0:format=yuv444,format=yuv420p[motion]; \
[motion]tmix=frames=$BUFFER \
" \
-c:v libx264 \
-r $FRAMERATE \
-an \
-hide_banner \
-y \
output.mp4
Получившееся
видео.
Чтобы анимация была плавнее и не страдала от округления координат до ближайшего четного целого, помог
ответ от гуру ffmpeg'а
Gyan: нужно форсить full chroma sampling.