NDK r21b 編譯FFmpeg 、x264 提供Android集成

NDK r21b 編譯FFmpeg 、x264 提供Android集成

       在現今這個階段,愈來愈多的app會涉及到音視頻,那麼學會使用ffmpeg和x264就頗有必要了。本篇文章將講解如何把ffmpeg、x264編譯成動態庫和靜態庫。html

    1. 編譯環境

       Linux/Ubuntu/Centis都行。在windows環境下能夠安裝虛擬機或者購買一個雲主機,做者在阿里雲購買的一個Ubuntu主機。linux

    2. 準備工做

      linux ndk下載:https://developer.android.google.cn/ndk/downloadsandroid

      FFmpeg 下載:http://ffmpeg.org/download.htmlwindows

      x264 下載:https://www.videolan.org/developers/x264.htmlbash

     將下載好的文件解壓app

     3. 編寫腳本

      3.1 編譯FFmpeg 

       1. 在解壓後的ffmpeg目錄新建build.sh文件,編輯build.sh,代碼以下:ide

#!/bin/bash
   
export NDK=/home/study/android-ndk-r21b
export PREBUILD=$NDK/toolchains/llvm/prebuilt
export CROSS_PREFIX=${PREBUILD}/linux-x86_64/bin/arm-linux-androideabi-
export CC=$PREBUILD/linux-x86_64/bin/armv7a-linux-androideabi21-clang
export NM=$CROSS_PREFIXnm
export AR=$CROSS_PREFIXar

export PREFIX=./android/armeabi-v7a

function build_so
    {
     ./configure \
		--prefix=$PREFIX \
		--cc=$CC \
		--nm=$NM \
		--ar=$AR \
		--enable-small \
		--disable-programs \
		--disable-avdevice \
		--disable-encoders \
		--disable-muxers \
		--disable-filters \
		--cross-prefix=$CROSS_PREFIX \
		--target-os=android \
		--arch=arm \
		--disable-shared \
		--enable-static \
		--enable-cross-compile
    }

make clean
build_so
make -j4
make install

   2. 修改權限  chmod +x build.shui

   3. 執行 ./build.shgoogle

   4. 編譯完成以後會在當前目錄生成android/armeabi-v7a文件,裏面的內容就是編譯ffmpeg生成的靜態庫和頭文件。阿里雲

  3.2 編譯x264

       1. 在解壓後的ffmpeg目錄新建build.sh文件,編輯build.sh,代碼以下:

#!/bin/bash

export NDK=/home/study/android-ndk-r21b
export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64
export API=21


function build_one
{
./configure \
    --prefix=$PREFIX \
	--disable-cli \
    --enable-static \
    --enable-pic \
    --host=$my_host \
	--cross-prefix=$CROSS_PREFIX \
    --sysroot=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot \

make clean
make -j8
make install
}

#arm64-v8a
PREFIX=./android/arm64-v8a
my_host=aarch64-linux-android
export TARGET=aarch64-linux-android
export CC=$TOOLCHAIN/bin/$TARGET$API-clang
export CXX=$TOOLCHAIN/bin/$TARGET$API-clang++
CROSS_PREFIX=$TOOLCHAIN/bin/aarch64-linux-android-
build_one

#armeabi-v7a
PREFIX=./android/armeabi-v7a
my_host=armv7a-linux-android
export TARGET=armv7a-linux-androideabi
export CC=$TOOLCHAIN/bin/$TARGET$API-clang
export CXX=$TOOLCHAIN/bin/$TARGET$API-clang++
CROSS_PREFIX=$TOOLCHAIN/bin/arm-linux-androideabi-
build_one

   2. 修改權限  chmod +x build.sh

   3. 執行 ./build.sh

   4. 編譯完成以後會在當前目錄生成android/armeabi-v7a 和 android/arm64-v8a文件,裏面的內容就是編譯ffmpeg生成的靜態庫和頭文件。

相關文章
相關標籤/搜索