The Transformer demo app lets you try out the API's capabilities and transform
your own media, including converting media between formats, trimming, and
applying video effects.

This page describes how to get, compile, and run the demo app. This guide also
describes how to use the demo app to transform your own media.

## Get the code

The source code for the main demo app can be found in the `demos/transformer`
folder of the [GitHub project](https://github.com/androidx/media). If you
haven't already done so, clone the project into a local directory:  

```
git clone https://github.com/androidx/media.git
```

Next, open the project in Android Studio. You should see the following in the
Android Project view (the relevant folders of the demo app have been expanded):
![The project in Android Studio](https://developer.android.com/static/guide/topics/media/transformer/images/demo-project.png) The project in Android Studio

## Compile and run the demo

To compile and run the demo app, select and run the `demo-transformer`
configuration in Android Studio. The demo app will install and run on a
connected Android-powered device. We recommend using a physical device if
possible, because typically an emulator's implementation of Android's media
stack has different capabilities and bugs compared to a real device.
![Demo app configuration activity](https://developer.android.com/static/guide/topics/media/transformer/images/configuration-activity.png) Demo app configuration activity

The demo app begins with the `ConfigurationActivity`, an activity where you can
set up the input media item and the transformation you want to perform. The two
buttons at the top of the screen let you choose from a list of preset media
files or pick a local file. Next, the scrollable list of options lets you
configure the output format and transformations, and you can select effects to
apply to the media. Tapping the last button transitions to
`TransformerActivity`, an activity that shows the current progress and a preview
of frames as they are passing through Transformer. Once transformation
completes, the input and output videos are shown together in two ExoPlayer
`PlayerView` instances.

## Transform your own content

The demo app supports selecting media for transformation using the buttons at
the top of the configuration screen. You can also pass a URL directly on the
command line:  

```
adb shell am start -a androidx.media3.demo.transformer.action.VIEW \
    -d https://yourdomain.com/sample.mp4
```
| **Tip:** If you see errors when selecting local media using this feature, check the [troubleshooting page](https://developer.android.com/media/media3/transformer/troubleshooting#local-files).

## MediaPipe integration

The demo app includes an example integration with
[MediaPipe](https://developers.google.com/mediapipe). You will need to build the
dependency manually, then select the `withMediaPipe` build variant to enable
building the app with the media pipe frame processor. See the
[README](https://github.com/androidx/media/tree/release/demos/transformer#mediapipe-frame-processing-demo)
for full instructions. The effects selector in the configuration activity
includes an example MediaPipe-based effect to try this out.