轉載請註明文章出處sudeqiangxx 前言:html
關於音視頻開發咱們須要準備的知識就是要先學習ffmpeg框架的學習,對於Android開發者而言,咱們須要把FFmpeg源碼編譯成.so文件,導入到咱們的工程中,才能引用到框架中的方法對音視頻進行處理。在這方面的專家雷大佬中國傳媒大學博士,你們能夠訪問他的博客,只惋惜,天怒英才,才26歲的大佬就離開了咱們。在這裏致敬咱們心中的大神,願天堂沒有代碼。linux
1.準備環境(linux,mac)建議不要在windows上編譯,很麻煩,還須要去搭建環境,能夠安裝虛擬機編譯。如下選擇用mac系統進行編譯。 2.下載ffmpeg源碼,我編譯的是4.1.3版本的ffmpegandroid
3.下載ndk,建議不須要下載最新版的ndk 本文使用的r17c版本windows
1.修改configure文件,找到下面代碼 如圖: bash
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
複製代碼
替換成框架
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'
複製代碼
保存好就okide
打開終端使用命令:open ~/.bash_profile 便可打開環境變量配置,到這一步應該沒問題。
複製代碼
腳本的做用就是把ffmpeg源碼打包成咱們須要的.so文件,供咱們的Android項目調用。學習
新建一個在ffmpeg文件夾下新建android_build.sh文件。ui
#!/bin/bash
ADDI_CFLAGS="-marm"
API=19
PLATFORM=arm-linux-androideabi
CPU=armv7-a
#本身本地的ndk路徑。
NDK=/Users/deqiangsu/develop/ndk/android-ndk-r17c
SYSROOT=$NDK/platforms/android-$API/arch-arm/
ISYSROOT=$NDK/sysroot
ASM=$ISYSROOT/usr/include/$PLATFORM
TOOLCHAIN=$NDK/toolchains/$PLATFORM-4.9/prebuilt/darwin-x86_64
#本身指定一個輸出目錄,用來放生成的文件的。
OUTPUT=/Users/deqiangsu/develop/ffmpeg/ffmpeg-3.3.9
function build
{
./configure \
--prefix=$OUTPUT \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-avdevice \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=android \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-I$ASM -isysroot $ISYSROOT -Os -fpic -marm" \
--extra-ldflags="-marm" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
build
複製代碼
複製上面的腳本代碼到咱們新建的文件中,打開終端,到ffmpeg文件下使用命令就能夠進行編譯idea
命令: ./android_build.sh
複製代碼