How to Build FFmpeg for Android
2012-11-30 12:52
495 查看
How to Build FFmpeg for Android
ffmpeg is an open-source platform for recording, converting, playing and streaming video and audio. It includes libavcodec, a popular video/audio codec.Several popular Android applications are built based on FFmpeg, including RockPlayer, MoboPlayer, acrMedia, vitalPlayer, V-Cut Express etc. If you’re developing multimedia applications that needs a video/audio codec, ffmpeg is a good choice.
This blog covers how to compile ffmpeg for Android, and next blog will cover
how to use ffmpeg to build a simple application.
The steps below are done on Ubuntu 10.10, android NDK r5b, and ffmpeg 0.8. It should work on other versions of Android NDK and ffmpeg, but it may require minor changes.
0. Download Android NDK r5b
You can download the NDK
here. Once downloaded, simply extract the file, and you’ll have a folder named android-ndk-r5b. You’ll need the folder location for configurations later.
1. Download Source Code for FFmpeg
You can download the source code from
here. If you want to get the latest code, you can use git or svn, the link has detailed instructions. But for this tutorial, the FFmpeg 0.8 “Love” release is downloaded.
After downloaded the source, extract it and you’ll have a folder named ffmpeg-0.8.
2. Build FFmpeg (The script is based on RockPlayer build script)
2.1 Copy and Paste the bash script from
here to a text editor, and save it as build_android.sh under ffmpeg-0.8 folder.
Note that NDK location has to be changed according to your android-ndk-r5b folder location. In my machine, it’s at ~/Desktop/android/, so it’s set as
NDK=~/Desktop/android/android-ndk-r5b
PLATFORM=$NDK/platforms/android-8/arch-arm/
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86
You may also need to adjust the PLATFORM based on which version of SDK you’re using, android-8 corresponds to android SDK 2.2.
The default configuration in the script disables a lot of stuff to speed up the build, you can change the configuration to suit your needs. Besides, you can compile for multiple hardware platforms, but here we only enable arm v7vfpv3 to speed up the build
process.
2.2 Make sure the bash script is executable. Go to the ffmpeg-0.8 directory in terminal, then type the following command,
sudo chmod 755 build_android.sh
2.3 Then execute the script, by typing the following command,
./build_android.sh
The compilation will take a while (several minutes or above depends on your machine) to finish.
Update for NDK-r6:
For android NDK-r6, the build_android.sh script might not work. You can try the scripthere.
Note that you may need to create ./android/armv7-a/ folder in the ffmpeg directory yourself. (Thanks tomgg28831 for this).
If you encounter permission denied error, you can try sudo ./build_android.sh.
3. The Output of the Build
Once the script finishes execution, there’ll be a folder called android under ffmpeg-0.8 directory, which contains all the output of the build.
4. To be Continued
Once the library is compiled successfuly, the next step is to use it to build Android apps. This is covered in next blog, How to Build Android Apps Based on FFmpeg By an Example.
Reference:
RockPlayer open source component: http://rockplayer.freecoder.org/tech.html
104 comments on “How to Build FFmpeg for Android”
android
developer on
November 14, 2012 at 9:47 am said:
Hi guys,
I’m working on FFMPEG on Android and we have problems.
1. I’m able to compile it with h264 support and it works fine.
2. I’m are able to encode video or still frame with the ffmpeg.
3. I’m able to merge few videos into one. But I have problem here with the native recorder’s videos.
Simply I’m not able to encode with the same parameters as it’s done by Android device.
The number of options is really huge and I don’t know how to use it.
When I try to merge frames from Android and ffpmeg encoded video it’s crashing or just showing half of the video.
Simply the biggest problem is to read encoding parameters from the native video (recorded with the build in camera), and then use it in the FFMPEG to encode compatible video – with exact parameters
We would really appreciate help.
I’m attaching screenshots with te parameters of Android and our FFMPEG settings.
相关文章推荐
- How to Build FFmpeg for Android
- How to Build FFmpeg for Android
- How to Build FFmpeg for Android
- How to Build FFmpeg for Android
- How to build Android adb for ARM
- How to Build and Use libnetfilter_queue for Android
- How To Build CyanogenMod Android for smartphone
- (NOT OK) How To Build CyanogenMod Android for Motorola Defy ("jordan")
- 编译自己的Windows Android SDK(how to build Android SDK for Windows)
- How to Build Android Applications Based on FFmpeg by An Example
- How to Build Android Applications Based on FFmpeg by An Example
- How to Build LineageOS rom for any android device Easily ! {Full guide}
- How to Build Android Applications Based on FFmpeg by An Example
- HOWTO build additional kernel modules for Android
- How to Build Android Applications Based on FFmpeg by An Example
- How to build Android adb for ARM .
- (NOT OK) How To Build CyanogenMod Android for Motorola Defy ("jordan")
- 如何在Android设备中用NDK编译SQLite并且对SQLite进行操作(增删)-How to Compile SQLite for Android using NDK
- Using Qt to build an Omi App for iOS (and Android)
- How to solve “Plugin execution not covered by lifecycle configuration” for Spring Data Maven Builds