Skip to content

Getting Started

ffmpegkit-maintained edited this page Jun 23, 2026 · 1 revision

Getting Started

1. Add the dependency for your tier

Pick the tier that covers what your app needs — see Compatibility or the Releases page for the full feature comparison.

Free (Maven Central, no charge):

repositories {
    mavenCentral()
}

dependencies {
    implementation 'dev.ffmpegkit-maintained:ffmpeg-kit-free:6.0.2'
}

Basic / Full / Full GPL (Gumroad, paid — download the .aar and add it as a local dependency):

repositories {
    flatDir {
        dirs 'libs'
    }
}

dependencies {
    implementation(name: "ffmpeg-kit-basic-6.0.1", ext: "aar") // or full / full-gpl
}

Drop the downloaded .aar into your module's libs/ folder first.

2. Run a synchronous command

import com.arthenica.ffmpegkit.FFmpegKit;
import com.arthenica.ffmpegkit.FFmpegSession;
import com.arthenica.ffmpegkit.ReturnCode;

FFmpegSession session = FFmpegKit.execute("-i file1.mp4 -c:v mpeg4 file2.mp4");

if (ReturnCode.isSuccess(session.getReturnCode())) {
    // SUCCESS
} else if (ReturnCode.isCancel(session.getReturnCode())) {
    // CANCELLED
} else {
    // FAILURE
    Log.d(TAG, String.format("Command failed with state %s and rc %s.%s",
        session.getState(), session.getReturnCode(), session.getFailStackTrace()));
}

3. Run an asynchronous command

FFmpegKit.executeAsync("-i file1.mp4 -c:v mpeg4 file2.mp4", session -> {
    SessionState state = session.getState();
    ReturnCode returnCode = session.getReturnCode();
    Log.d(TAG, String.format("FFmpeg process exited with state %s and rc %s.%s",
        state, returnCode, session.getFailStackTrace()));
});

The package name and class/method signatures are unchanged from upstream com.arthenica.ffmpegkit — if you're moving from the old Maven Central artifacts, see Migration instead of rewriting call sites.

For the full API surface (FFprobe, media info, callbacks, cancellation, session history), see API Usage.

Clone this wiki locally