Для того чтобы размер мп4 был минимальный, надо собрать его из кадров, 1 кадр ключевой.
Подготовка видео. опции влияют по разному, выбирайте лучший размер и качество. //звук выкл, обрезать, масштаб и быстрый декодер: ffmpeg -i input.mp4 -an -t 3.5 -vf "scale=120:160" -tune fastdecode output.mp4 ffmpeg -i input.mp4 -vf "format=rgba, fps=24" frames/f-%02d.png ffmpeg -i frames/f-%02d.png -vf "scale=120:160:flags=lanczos,boxblur=1:1" -pix_fmt rgba frames/f-%02d.png ========================================== //сделать из фреймов гифку: ffmpeg -i frames/f-%02d.png -vf "palettegen=stats_mode=diff:max_colors=128" pal.png ffmpeg -i frames/f%02d.png -i pal.png -filter_complex "paletteuse=dither=bayer:bayer_scale=2:alpha_threshold=128" out.gif ========================================== ffmpeg -i input.mp4 -vf "fps=14,scale=120:160" -frames:v 49 -c:v libx264 -g 1 -tune stillimage -crf 30 -preset veryslow -an sprite.mp4 ffmpeg -i output.mp4 -map_metadata -1 -c copy clean.mp4 //35 кадров 7*5 1 сек ffmpeg -framerate 35 -i frames/f-%02d.png -c:v libx264 -preset veryslow -tune animation -crf 32 -g 35 -keyint_min 35 -sc_threshold 0 -x264-params ref=1:bframes=0:me=dia:merange=8 -pix_fmt yuv420p -an -tune fastdecode output.mp4 //49 кадров 7*7 1 сек ffmpeg -framerate 49 -i frames/f-%02d.png -c:v libx264 -preset veryslow -tune animation -crf 32 -g 49 -keyint_min 49 -sc_threshold 0 -x264-params ref=1:bframes=0:me=dia:merange=8 -pix_fmt yuv420p -an -tune fastdecode output.mp4 ========================================== //исходник 6сек в 49 кадров 7*7 ffmpeg -i mirror.mp4 -vf "format=rgba, fps=8.1" frames/f_%02d.png //сборка с хорошим качеством, размер немного больше ffmpeg -framerate 49 -i frames/f_%02d.png -c:v libx264 -preset veryslow -tune animation -g 49 -keyint_min 49 -sc_threshold 0 -x264-params ref=1:bframes=0:me=dia:merange=8 -pix_fmt yuv420p -an -tune fastdecode output.mp4
Помощник для видео, делает из mp4 js+base64
Конвертировать в Base64
Создать внешний JS-скрипт