This project aims to create working library providing playing and converting video files in android via ffmpeg libraries. We rather want to use ffmpeg library without modifications to facilitate updating of ffmpeg core.
This project aim to simplify compilation of FFmpeg for android different architectures to one big apk file.
I moved project source code to our company review system https://review.appunite.com because I am used to benefit from review systems like Gerrit. There you can find newest not yet accepted source code. If you do not care of newest source code or contributing software you can just use github where you can reaches accepted commits.
git clone https://review.appunite.com/androidffmpeg
or
git clone https://github.com/nxtreaming/AndroidFFmpeg.git
Copyright (C) 2012 Appunite.com Licensed under the Apache License, Verision 2.0
FFmpeg, libvo-aacenc, vo-amrwbenc, yuv2rgb and others libraries projects are distributed on theirs own license.
We do not grant of patent rights. Some codecs use patented techniques and before use those parts of library you have to buy thrid-party patents.
on mac: you have to install xcode and command tools from xcode preferences you have to install (on mac you can use brew command from homebrew): you have to install:
- autoconf
- autoconf-archive
- automake
on Debian/Ubuntu - you can use apt-get
on Mac - you can use tool brew from homebrew project. You have additionally install xcode.
glibtoolize: because the Xcode 4.5.2 fails to supply glibtoolize, but freetype2 depends on it, just copy your 'libtoolize' to 'glibtoolize', Such as:
sudo cp /usr/local/bin/libtoolize /usr/local/bin/glibtoolize
if you have a problem with certificate add GIT_SSL_NO_VERIFY=true before git submodule update line
GIT_SSL_NO_VERIFY=true git submodule update
Im sorry about this certificate issue, but never is enough time to fix problems like those
If you have ssh key in our review system you should setup global alias in ~/.gitconfig file.
git config --global url.ssh://review.appunite.com.insteadOf https://review.appunite.com
downloading source code
git clone https://review.appunite.com/androidffmpeg AndroidFFmpeg
cd AndroidFFmpeg
git submodule init
git submodule sync #if you are updating source code
git submodule update
cd FFmpegLibrary
cd jni
setup freetype2 environemtn
cd freetype2
./autogen.sh
cd ..
setup fribidi environemtn
cd fribidi
autoreconf -ivf
cd ..
setup libass environemtn
cd libass
autoreconf -ivf
cd ..
setup vo-aacenc environment
cd vo-aacenc
autoreconf
cd ..
setup vo-amrwbenc environment
cd vo-amrwbenc
autoreconf
cd ..
build external libraries
export NDK=/your/path/to/android-ndk
./build_android.sh
make sure that files FFmpegLibrary/libs/{armeabi,armeabi-v7a,x86}/libffmpeg.so was created, otherwise you are in truble
build ndk jni library
ndk-build
build your project
android update lib-project -p FFmpegLibrary
android update project -p FFmpegExample
cd FFmpegExample
ant debug
ant installd
or create new projects from FFmpegLibrary and FFmpegExample source directories in your eclipse. Run FFmpegExample as your android project. If you have adt >= 20.0 you can click right mouse button on project and FFmpegLibrary project and "Android->Add native support".
If you nead more codecs:
-
edit build_android.sh
-
add more codecs in ffmpeg configuration section
-
remove old ffmpeg-build directory by
rm -r ffmpeg-build
-
build ffmpeg end supporting libraries
./build_android.sh
During this process make sure that ffmpeg configuration goes without error.
After build make sure that files FFmpegLibrary/libs/{armeabi,armeabi-v7a,x86}/libffmpeg.so was created, otherwise you are in truble
-
build your ndk library
ndk-build
-
refresh your FFmpegLibrary project in eclipse!!!!
-
build your FFmpegExample project
Library made by Jacek Marchwicki from Appunite.com
- Thanks to Martin Böhme for writing tutorial: http://www.inb.uni-luebeck.de/~boehme/libavcodec_update.html
- Thanks to Stephen Dranger for writing tutorial: http://dranger.com/ffmpeg/
- Thanks to Liu Feipeng for writing blog: http://www.roman10.net/how-to-port-ffmpeg-the-program-to-androidideas-and-thoughts/
- Thanks to ffmpeg team for writing cool stuff http://ffmpeg.org
- Thanks to Alvaro for writing blog: http://odroid.foros-phpbb.com/t338-ffmpeg-compiled-with-android-ndk
- Thanks to android-fplayer for sample code: http://code.google.com/p/android-fplayer/
- Thanks to best-video-player for sample code: http://code.google.com/p/best-video-player/
- Thanks to Robin Watts for his work in yuv2rgb converter http://wss.co.uk/pinknoise/yuv2rgb/
- Thanks to Mohamed Naufal (https://github.com/hexene) and Martin Storsjö (https://github.com/mstorsjo) for theirs work on sample code for stagefright/openmax integration layer.