Skip to main content

Banuba Face AR SDK


Welcome to Banuba Face AR SDK. This document will help you to get started with our SDK and guide you on how to create your project with Face AR features.

Banuba SDK allows developers to include AR features into their applications. Our documentation will give you a complite guide how to use the features described.

How to read this documentation:

  1. View the samples. The SDK is delivered with examples of feature applications for each platform. They cover a variety of real-life use cases and give a comprehensive overview of how to run and use the SDK.
  2. Setup your project using our examples.
  3. This document review the features across the supported platforms


The image below shows the components of the Banuba Face AR SDK.



EffectPlayer is a low-level library for effects' playing. Its code doesn’t depend on any platform-specific APIs or compilers.

EffectPlayer is written in C++, but has bindings to all supported platform-specific languages and runtimes.
You need to use Java or Kotlin on Android, and Objective-C or Swift on iOS for dealing with this API.

EffectPlayer features:

  • Consumes the camera frames and requests for the frame drawing. Serves it in an asynchronous manner using multithreading if available on a platform.
  • Runs all recognition operations on the input frames.
  • Runs and manages all platform-specific modules encapsulated in C++. For example audio playback, video playback, accelerometer, scripting engine, etc.
  • Implements all logic of loading and playing interactive effects (loading from disk, rendering, scripting of effect logic, etc).

Platform modules

The functionality of the platform modules depends on the specific platform. Generally, it includes:

  • camera features (permission management, configuration, lifecycle implementation)
  • effect's rendering context setup
  • video recording
  • high-resolution photo taking
  • preparing of EffectPlayer's resources on the app's launch

The source code of the platform modules is included in SDK's distribution archive. You can modify the code and adapt the SDK up to your use case if its default functionality is not enough.

More info