Android使用FFmpeg(一)--編譯ffmpeg

關(guān)于

Android使用FFmpeg(一)--編譯ffmpeg
Android使用FFmpeg(二)--Android Studio配置ffmpeg
Android使用FFmpeg(三)--ffmpeg實(shí)現(xiàn)視頻播放
Android使用FFmpeg(四)--ffmpeg實(shí)現(xiàn)音頻播放(使用AudioTrack進(jìn)行播放)
Android使用FFmpeg(五)--ffmpeg實(shí)現(xiàn)音頻播放(使用openSL ES進(jìn)行播放)
Android使用FFmpeg(六)--ffmpeg實(shí)現(xiàn)音視頻同步播放
Android使用FFmpeg(七)--ffmpeg實(shí)現(xiàn)暫停、快退快進(jìn)播放

前言

ffmpeg簡介
在現(xiàn)今這個階段,越來越多的app會涉及到音視頻,那么學(xué)會使用ffmpeg就很有必要了。在這個系類中將講解如何把ffmpeg編譯成動態(tài)庫,以及使用ffmpeg實(shí)現(xiàn)音視頻播放和音視頻的采集。

編譯環(huán)境

Linux/Ubuntu/centos都行
在windows環(huán)境下可以安裝虛擬機(jī)或者購買一個云主機(jī),作者在金山云購買的一個Ubuntu主機(jī)。

準(zhǔn)備工作

下載配置ndk,下載ffmpeg并解壓。

開始

配置ndk

如果你已經(jīng)配置ok,請?zhí)^這一步。
我們打開自己的虛擬機(jī)或者云服務(wù)器并且獲取到root權(quán)限。創(chuàng)建文件夾ndk_build并進(jìn)入到文件夾中,下載ndk,并解壓

mkdir ndk_build//新建文件夾
cd ndk_build//進(jìn)入到文件夾
wget +linux版本的下載鏈接地址//下載ndk
unzip + 壓縮文件//解壓

配置ndk

vim ~/.bashrc//進(jìn)入環(huán)境變量配置
export NDKROOT=/home/ndk_build/android-ndk-r14b//配置你的安裝路徑
export PATH=$NDKROOT:$PATH//配置路徑
:wq!//保存退出
source ~/.bashrc//執(zhí)行環(huán)境變量
ndk-build//查看是否安裝成功,只要不是顯示ndk-build not found,則表示安裝成功

下載編譯ffmpeg

下載ffmpeg并解壓


下載ffmpeg并解壓.png
wget http://ffmpeg.org/releases/ffmpeg-2.6.9.tar.gz
tar -xzf  ffmpeg-2.6.9.tar.gz

修改configure文件并新建android_build.sh文件,編輯android_build.sh

#!/bin/bash
make clean
export NDK=/home/ndk_build/android-ndk-r14b
export SYSROOT=$NDK/platforms/android-9/arch-arm/
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
export CPU=arm
export PREFIX=$(pwd)/android/$CPU
export ADDI_CFLAGS="-marm"
./configure --target-os=linux \
--prefix=$PREFIX --arch=arm \
--disable-doc \
--enable-shared \
--disable-static \
--disable-yasm \
--disable-symver \
--enable-gpl \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install

其中NDK是你自己剛剛配置的ndk路徑,SYSROOT為platforms中的路徑,TOOLCHAIN為toolchains里面中的路徑,依次配置好過后保存并退出。
修改configure,如果你不修改的話,編譯出來過后的.so文件后面會有一串?dāng)?shù)字,無法使用,所以得修改他的命名規(guī)則。
將該文件中的如下四行:

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)'

編譯.sh文件
···
./android_build.sh
···
當(dāng)編譯成功過后會在文件夾中出現(xiàn)android文件夾,

編譯過后的ffmpeg目錄.png

在lib文件夾中就有你需要的.so文件了
.so文件.png

這樣就差不多編譯完成,如果你需要編譯一份別人已經(jīng)編譯過的ffmpeg,那么請先執(zhí)行./confifure --disable-yasm,然后再自己編譯。
如果還沒編譯好但是急需的朋友可以直接下載使用。
.so下載地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容