AndroidVideoMotion is a comprehensive Android library and application suite designed for generating motion videos natively on-device. It provides a flexible, modular architecture for composing complex visual sequences—ranging from simple text animations to advanced 3D rendering and ML-powered image processing—and encoding them into high-quality video files.
The project is built as a multi-module Gradle monorepo, allowing developers to include only the specific rendering or encoding capabilities they require.
The following diagram illustrates how the various high-level components of the AndroidVideoMotion suite interact to transform raw assets and data into rendered video files.
High-Level System Flow
Sources: README.md1-7 settings.gradle18-34 .idea/gradle.xml13-30
The project is organized into 16 specialized modules located under the modules/ directory. This modularity ensures that heavy dependencies (like Filament for 3D or TensorFlow for ML) are optional and decoupled from the core rendering logic.
core and motionlib contain the base interfaces and the primary rendering engine.ffmpeg-motion-ext and jcodec-motion-ext.3d-filament-renderer and 3d-opengl-renderer.lyrics-maker, ivi-demo, and metadata-extractor.motion-store provides Room-based persistence and synchronization.For a detailed breakdown of every module and their dependency graph, see Repository Structure & Module Map.
Module Dependency Mapping
Sources: settings.gradle19-34 .idea/gradle.xml13-30
The library provides a MotionVideoProducer pipeline that captures frames from custom views and encodes them using various backends. It supports multiple aspect ratios and configurable frame rates.
core, motionlib.Built-in components include specialized text views (TypeWriter, WordBlink) and audio waveform visualizers. These are driven by a robust interpolation system that handles timing, color transitions, and spring physics.
motionlib.Integrated support for tensorflow-lite and pytorch_android_lite allows for on-device background removal and super-resolution. The 3D modules integrate Google's Filament engine for PBR (Physically Based Rendering) within the video timeline.
3d-filament-renderer.The lyrics-maker module demonstrates a full product implementation, including metadata extraction via Open Graph (using jsoup), lyric synchronization, and background project management with motion-store.
lyrics-maker, metadata-extractor, motion-store.AndroidVideoMotion is distributed via JitPack. You can integrate the core library or specific extensions by adding the JitPack repository to your settings.gradle and the desired modules to your build.gradle.
Sources: README.md9-29 settings.gradle9-16
For detailed setup instructions, including devcontainer configuration and local build requirements (JDK 17), see Getting Started & Installation.
The project utilizes GitHub Actions for continuous integration, ensuring that every push to main is validated across several dimensions:
gradle.yml handles standard CI builds using JDK 17 and Gradle 9.3.1.gradle-publish.yml automates releases to GitHub Packages when a release is created.ktlint and detekt workflows maintain code style and quality.Sources: .github/workflows/gradle.yml8-37 .github/workflows/gradle-publish.yml8-45 gradle/wrapper/gradle-wrapper.properties3 gradle/libs.versions.toml61
Refresh this wiki