I'm trying to decide which library to choose in order to create app that can filters a video, for example beautify or clarity.
During my search I came across 2 candidates: OpenCv and FFmpeg, and I found a complete framework only for FFmpeg(so +1 for this).
I couldn't found a complete comparision between the two so if someone has tried them and can post the answer it would be really helpful.
Edit:
Another candidate is Marvin framework(Java project) for Android - https://code.google.com/p/android-image-filtering/
OpenCV is a framework for Computer Vision and it's very limited for what you need because it requires you to write most of the cool filters yourself. Nevertheless, it provides a few techniques to blur images, change contrast, convert to grayscale, flip, crop, threshold, erode, dilate, resize, rotate, isolate colors, composite, and few other things. Just so you have an idea of how to implement filters, I recently implemented a Displacement Map Filter using OpenCV.
FFmpeg has a few filters as well, but it's meant to be a cross-platform solution to record, convert and stream audio and video, which means it doesn't really offer many filter effects.
Nevertheless, both APIs can read video (files and stream from camera) on Android and provide access to the video frames so you can execute your custom filters.
I believe the technology that can really help you bring a large collection of filters to your application is ImageMagick. Note that ImageMagick doesn't handle videos, so you can use Android's native API, OpenCV or FFmpeg for this part. Here are a few examples of what you can do with an image using ImageMagick from the command line, a program interface, or script: