FFMPEG x264編譯

Ubuntu 12.04下編譯FFMPEG、x264

1、編譯之前首先得安裝NDK,配置NDK的教程網上有很多

2、下載x264庫,命令行中執行

git clone http://git.videolan.org/git/x264.git

3、編譯x264庫,以下是我的執行腳本(build_x264.sh),我這個是直接在解壓出來的x264文件夾中定義的,如果定義在別的位置,腳本之前應該加入cd…,首先進入你的x264目錄

 ##這裏要寫你自己的NDK路徑
 export NDK=/usr/local/bin/android-ndk-r9
 ##確認以下路徑是否存在根據自己的環境進行配置
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
export PLATFORM=$NDK/platforms/android-9/arch-arm
export PREFIX=/usr/local/264lib/lib
./configure \
  --prefix=$PREFIX \
  --enable-static \
  --enable-shared \
  --enable-pic \
  --disable-asm \
  --disable-cli \
  --host=arm-linux \
  --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
  --sysroot=$PLATFORM

make -j8
make install

4、執行chmod 777 /你的腳本,開放權限,然後直接./你的腳本就可以了。

5、FFMPEG源碼下載,這個有一點耗時

git clone https://git.ffmpeg.org/ffmpeg.git

6、編譯FFMPEG加入x264的鏈接

export NDK=/usr/local/bin/android-ndk-r9
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
export PLATFORM=$NDK/platforms/android-8/arch-arm
export SYSROOT=$TOOLCHAIN/sysroot/
//生成的libffepg.so文件的目錄
export PREFIX=/usr/local/ffmpegwithx264/liboutput
//這個是引用的x264的目錄,把剛剛x264生成的目錄寫在這裏
EXTRA_CFLAGS="-I/usr/local/264lib/lib/include"
EXTRA_LDFLAGS="-L/usr/local/264lib/lib/lib"
./configure \
    --target-os=linux \
    --prefix=$PREFIX \
    --enable-cross-compile \
    --enable-runtime-cpudetect \
    --disable-asm \
    --disable-doc \
    --arch=arm \
    --cc=$TOOLCHAIN/bin/arm-linux-androideabi-gcc \
    --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
    --disable-stripping \
    --nm=$TOOLCHAIN/bin/arm-linux-androideabi-nm \
    --sysroot=$PLATFORM \
    --enable-gpl \
    --enable-static \
    --disable-shared \
    --enable-version3 \
    --enable-small \
    --disable-vda \
    --disable-iconv \
    --disable-encoders \
    --enable-libx264 \
    --enable-encoder=libx264 \
    --enable-muxers \
    --enable-zlib \
    --disable-outdevs \
    --disable-ffprobe \
    --disable-ffplay \
    --disable-ffmpeg \
    --disable-ffserver \
    --disable-debug \
    --extra-cflags=$EXTRA_CFLAGS \
    --extra-ldflags=$EXTRA_LDFLAGS

make clean 
make -j8
make install

$TOOLCHAIN/bin/arm-linux-androideabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -L$PREFIX/lib -soname libffmpeg.so -shared -nostdlib -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so \
    //這個路徑要改一下在x264的生成目錄裏面
    /usr/local/264lib/lib/lib/libx264.a \
    libavcodec/libavcodec.a \
    libavfilter/libavfilter.a \
    libswresample/libswresample.a \
    libavformat/libavformat.a \
    libavutil/libavutil.a \
    libswscale/libswscale.a \
    libpostproc/libpostproc.a \
    libavdevice/libavdevice.a \
    -lc -lm -lz -ldl -llog --dynamic-linker=/system/bin/linker 
    //這個路徑要改一下在x264的生成目錄裏面
    $TOOLCHAIN/lib/gcc/arm-linux-androideabi/4.8/libgcc.a

5、編譯完成,中間如果遇到問題,首先看自己的路徑是否正確。

6、錯誤:我在編譯的時候遇到的問題:這裏寫圖片描述

這個是由於我的引用沒有寫對,注意這裏寫的不是路徑,前面的-I,-J不能少
EXTRA_CFLAGS=”-I/usr/local/264lib/lib/include”
EXTRA_LDFLAGS=”-L/usr/local/264lib/lib/lib”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章