CLI for rendering Lottie animations via Puppeteer to image, GIF or MP4.
This CLI is also available as a library.
npm install -g puppeteer-lottie-cli
If you want to generate GIFs, you must also install gifski. On macOS, you can run:
brew install gifski
If you want to generate MP4s, you must also install ffmpeg. On macOS, you can run:
brew install ffmpeg
Usage: puppeteer-lottie [options]
Options:
-i, --input <path> relative path to the JSON file containing animation data
-o, --output <path> relative path to store output media (image, image pattern, gif, or mp4) (default: "out.png")
-w, --width <number> optional output width
-h, --height <number> optional output height
-b, --background <css-color-value>
optional output background color (default: "transparent")
-q, --quiet disable output progress
-V, --version output the version number
-h, --help output usage information
Output must one of the following:
- An image to capture the first frame only (png or jpg)
- an image pattern (eg. sprintf format 'frame-%d.png' or 'frame-%012d.jpg')
- an mp4 video file (requires FFmpeg to be installed)
- a GIF file (requires Gifski to be installed)
Examples:
$ puppeteer-lottie -i fixtures/bodymovin.json -o out.mp4
$ puppeteer-lottie -i fixtures/bodymovin.json -o out.gif --width 640
$ puppeteer-lottie -i fixtures/bodymovin.json -o 'frame-%d.png' --width 1024 --height 1024
If you don't pass width
or height
, the animation's intrinsic size will be used, and if that doesn't exist it will use 640x480.
If you pass width
or height
, the other dimension will be inferred by maintaining the original animation's aspect ratio.
If both width
and height
are passed, the output will have those dimensions, but there will be extra whitespace (or transparency if rendering PNGs) due to lottie-web
's default rendererSettings.preserveAspectRatio
of xMidyMid meet
(docs and demo).
For mp4
outputs, the height may be different by a pixel due to the x264
encoder requiring even heights.
All lottie-web features should be fully supported by the svg
, canvas
, and html
renderers.
This includes all of the animations on lottiefiles.com! 🔥
Also see Lottie's full list of supported features.
- puppeteer-lottie - Library for this CLI.
- puppeteer - Headless Chrome Node API.
- awesome-puppeteer - Curated list of awesome puppeteer resources.
- lottie - Render After Effects animations natively on Web, Android and iOS, and React Native.
MIT © Travis Fischer
Support my OSS work by following me on twitter