將x264配置到ffmpeg中需要先編譯x264,生成靜態庫或動態庫。因為264的靜態庫本身不大(我編譯完成後是1.1M)且考慮到平台移植問題,這裡選擇的是編譯生成靜態庫。
准備,新建工作空間
(1)創建總目錄FFmpeg-Android
eg: mkdir workspace --> cd workspace --> mkdir FFmpeg-Android --> cd FFmpeg-Android
(2)創建保存x264靜態庫的目錄 android-x264
(在FFmpeg-Android目錄下)mkdir 264 --> cd 264
1、編譯x264
(1)去官網:http://www.videolan.org/developers/x264.html 下載最新的264源代碼。這裡下載的是2013年10月份出的版本0.14。將壓縮包解壓縮到264FFmpeg-Android/264目錄下,
(2)編寫腳本文件:
export NDK=$NDK_HOME
export PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.6/prebuilt
export PLATFORM=$NDK/platforms/android-19/arch-arm
export PREFIX=../../android-x264
./configure --prefix=$PREFIX \
--enable-static \
--enable-pic \
--disable-asm \
--disable-cli \
--host=arm-linux \
--cross-prefix=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi- \
--sysroot=$PLATFORM
注意:這裡涉及到路徑的變量需要根據你們自己的情況來調整。
PREBUILT 變量保存的是NDK交叉編譯鏈的路徑,
PLATFORM 變量保存的是NDK進行鏈接時查找庫文件的路徑(arch-arm目錄下保存的是各種andorid平台下的c庫頭文件和靜態以及動態庫)
PREFIX 變量保存的是編譯生成的靜態庫保存的路徑
(3)運行腳本,結果如下圖
(4)執行完剛才的腳本後,會在當前目錄生成配置文件,這裡還需要修改以下幾個文件,原因是:編譯成功後在eclipse下運行會出現 "cannot locate symbol 'log2f' " 的錯誤
修改1、config.h
---- #define HAVE_LOG2F 1
+++#define HAVE_LOG2F 0
修改2、encoder/encoder.c 、 encoder/ratecontrol.c 、encoder/analyse.c 、encoder/set.c
在文件開頭處添加
+++ #include <math.h>
+++ //<!-- add by chance_yin 2013.12.27
+++ #undef log2f(x)
+++ #undef log2f
+++ #define log2f(x) (logf(x)*1.4426950408889634f)
+++ // end add by chance_yin-->
FFmpeg 的詳細介紹:請點這裡
FFmpeg 的下載地址:請點這裡
推薦閱讀:
Linux下編譯FFmpeg之下載源文件並編譯 http://www.linuxidc.com/Linux/2012-02/54565.htm
Linux 編譯升級 FFmpeg 步驟 http://www.linuxidc.com/Linux/2013-08/88190.htm
CentOS 5.6 上安裝 FFMPEG http://www.linuxidc.com/Linux/2011-09/42793.htm
在Ubuntu下安裝FFmpeg http://www.linuxidc.com/Linux/2012-12/75408.htm
更多Ubuntu相關信息見Ubuntu 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=2