Download Latest Version ffmpeg-HEAD-aa86ccc.android.tar.gz (8.8 MB)
Email in envelope

Get an email when there's a new version of FFmpeg for Android

Home / 20121012
Name Modified Size InfoDownloads / Week
Parent folder
ffmpeg-HEAD-b4e516e.android.tar.gz 2012-10-12 7.9 MB
ffmpeg-1.0.android.tar.gz 2012-10-12 7.9 MB
ffmpeg-0.11.2.android.tar.gz 2012-10-12 7.4 MB
ffmpeg-0.10.5.android.tar.gz 2012-10-12 7.1 MB
ffmpeg-0.9.2.android.tar.gz 2012-10-12 6.0 MB
ffmpeg-0.8.12.android.tar.gz 2012-10-12 5.5 MB
ffmpeg-0.7.13.android.tar.gz 2012-10-12 5.5 MB
ffmpeg4android.readme 2012-10-12 5.9 kB
Totals: 8 Items   47.3 MB 0
===========================================================================
FFmpeg for Android
http://sourceforge.net/projects/ffmpeg4android/
Srdjan Obucina <obucinac@gmail.com>
===========================================================================



===========================================================================
Introduction
===========================================================================

FFmpeg for Android is a set of Android makefiles which enable configuration
and building FFmpeg library under Android source code tree with Android
NDK.

While working as a system integrator, I have come upon more than few
Android ports of FFmpeg library. All of them have some non-features in
common:

- It is not possible to use configure script to configure the library. This
  may lead to invalid library configuration and output and degraded
  performance or feature set.
- Some FFmpeg libraries are missing. Usually, only libavutil, libavcodec
  and libavformat are built.
- FFmpeg tools (ffmpeg, ffplay, ffprobe, ffserver) are missing.
- Manually added files into Android.mk, usually without proper
  understanding of dependencies between files and function of each file
  in a library.
- Configuration is locked to single architecture.
- The library can not be built in parallel for different target products
  and architectures. This is important for large test environments.
- Missing or incomplete compiler and linker flags.
- Building library in a "It compiles = It is working" manner.
- Building library as a large single file.

This project is my attempt to address these and many other issues and
create makefiles for building FFmpeg library under Android source code tree
which will create output as close as possible to the output of "regular"
building process using standalone toolchain. These makefiles are result of
combining and extending various makefiles I have found on the web and
during my work.



Makefiles are tested and are working fine on:

Build host OS:      Ubuntu 10.04, Ubuntu 11.04
Android target OS:  Honeycomb, ICS, Android Master branch
Architecture:       arm, mips, x86
SDK + NDK release:  platform-11 + NDK-r6, platform-14 + NDK-r8
Product:            full-eng, full_mips-eng, full_x86-eng, and some
                    proprietary bleeding edge products
FFmpeg releases:    0.7.13, 0.8.12, 0.9.2, 0.10.5, 0.11.1, 0.11.2, 1.0,
                    HEAD-b4e516e



===========================================================================
Features
===========================================================================

- On-the-fly library configuration. FFmpeg will be configured on-the-fly,
  during Android building process, in accordance to the selected product,
  cpu architecture, cpu architecture variant, and fine tuning cpu
  parameters.
- Configuration driven building. No need to manually add filenames to the
  makefiles, or hack through the library in order to get the build you
  want.
- Per product configuration. Every TARGET_PRODUCT will have its own
  configuration.
- Builds all libraries and tools, except ffplay.
- Builds both shared and static libraries, except 0.7, 1.0 and HEAD, which
  are built as a static only.
- Builds latest releases form 0.7, 0.8, 0.9, 0.10, 0.11 and HEAD branches.
- Supports parallel building from the same source for the different
  products.



===========================================================================
Known issues
===========================================================================

- HEAD and 1.0 branch can be built only as a static library. There is a
  problem with undefined references to version structures from *.ver
  files.
- 0.7 branch can be build only as a static library. There is a problem
  with undefined references to version structures from *.ver files.
- Prebuild step fails for some versions on some architectures. However,
  it does not seem like this influences propper building.



===========================================================================
Usage
===========================================================================

Extract ffmpeg-<version>.android.tar.gz into Android source code tree, at
location:

<android-src-root-dir>/external

Files will be located in:

<android-src-root-dir>/external/ffmpeg-<version>.android

Edit Android_configuration.mk and apply your customizations to the
./configure parameters, if needed.

Initialize Android build environment:

cd <android-src-root-dir>
. build/envsetup.sh
lunch <product>

To configure and build the library, run

make

or

cd external/ffmpeg-<version>.android; mm;

If there is no existing library configuration for a selected product, the
library will be configured on the fly, during building process, with
parameters provided in Android_configuration.mk. Whenever you change
configuration parameters, the library will be reconfigured.

Compiled FFmpeg libraries and tools will have version suffix, eg
libavcodec-0.11.2.a, libavutil-0.11.2.so, ffprobe-0.11.2



===========================================================================
Plan
===========================================================================

Short term plan is to test and update scripts to work on more architectures
and platforms.

Long term plan is to continue to provide scripst for latest FFmpeg library
releases, as they appear.

The Ultimate plan is to try to make scripts part of official FFmpeg
library, once they are stable and robust enough.



===========================================================================
License:
===========================================================================

Please, note that FFmpeg library and FFmpeg for Android makefiles for
building it under Android source code tree are two different projects.
FFmpeg for Android makefiles are licensed under whatever license You are
using FFmpeg.

Source: ffmpeg4android.readme, updated 2012-10-12