標(biāo)簽(空格分隔): FFMPEG
最近在研究Android視頻播放功能,網(wǎng)上有很多關(guān)于視頻播放解碼的庫悼院,但是作為程序員的我淮逊,還是希望能從源頭出發(fā),學(xué)習(xí)FFMPGE自然是勢在必行了蚁趁。
網(wǎng)上有關(guān)FFMPGE學(xué)習(xí)的文章有很多裙盾,但是對(duì)于初學(xué)者而言,看的時(shí)候似乎總有一點(diǎn)不知所以然感覺,本人也是其中一個(gè)番官。再此庐完,作為一個(gè)初學(xué)者,我們需要按著怎樣的步驟來學(xué)習(xí)FFPEG呢徘熔?本系列文章就來一起記錄一下门躯,初學(xué)者探索FFMPEG的歷程,一點(diǎn)一滴的走向通往大神之路酷师。
本片文章讶凉,我的計(jì)劃是這樣的,
- 編譯出
ffmpeg
可以為Android使用動(dòng)態(tài)鏈接庫- Android studio建立jni工程使用動(dòng)態(tài)鏈接庫
- 使用動(dòng)態(tài)鏈接庫實(shí)現(xiàn)一個(gè)簡單的視頻播放
在做上面的功能的時(shí)候山孔,作為初學(xué)者懂讯,我們需要有的基礎(chǔ)知識(shí)是:linux基本功,C語言的基本功饱须,JNI的基本功域醇,Android的基本功,我相信蓉媳,本篇文章的人譬挚,這些基本功,大多數(shù)都已經(jīng)具備了酪呻。
在完成上面的功能的時(shí)候减宣,如果你從未接觸過ffmeg,或者對(duì)linux不熟悉,也不同擔(dān)心玩荠,你完全可以不求甚解的按著我的步驟一步一步的進(jìn)行下去漆腌,我們的目的是先把效果實(shí)現(xiàn),然后在對(duì)每一個(gè)功能過程逐步展開阶冈,到那時(shí)闷尿,你就會(huì)發(fā)現(xiàn)自己的不足,在惡補(bǔ)也不遲女坑,正如我們學(xué)一門語言的時(shí)候填具,總要先搞一個(gè)hello world
,這案例就是我們的hello wrold
.
好了閑話不多扯了匆骗,先完成第一個(gè)
準(zhǔn)備材料:
- Ubuntu 劳景,我這里用的是16.04
- VMware 12.0,如果你的電腦裝的就是Ubuntu這個(gè)就可以不用了,這里我使用的是虛擬機(jī)安裝的碉就。
- NDK linux 版本盟广,這里我用的是ndk-r13;
- 下載ffmpeg ,這里我下載的是最新的版本瓮钥,你根據(jù)自己的選擇就行了
有了以上的材料筋量,我們的工作就是烹吵,在Ubuntu上配置NDK,至于如何配置呢毛甲?很簡單年叮。打開終端輸入一下命令
sudo gedit /etc/profile
然后在文件中配置:
export NDK_HOME=/home/sivin/programs/android-ndk-r13 //這里替換成你的ndk存放路徑
export PATH=$NDK_HOME=:$PATH
下載ffmpeg
,這個(gè)我們可以直接在搜索引擎上搜索ffmpeg
,進(jìn)入官網(wǎng)里面提供了很多版本的下載玻募,這里我們使用的是linux
下git
的方式只损,當(dāng)然你也可以下載壓縮包,然后解壓也行七咧,個(gè)人喜好跃惫。
修改Configure文件
將里面的內(nèi)容
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)'
下面的工作就是編譯ffmpeg
了,我們?cè)?code>ffmepg的根目錄下艾栋,新建build_android.sh
然后在文件中寫入:
#!/bin/bash
make clean
export NDK=你的NDK路徑
export SYSROOT=$NDK/platforms/android-9/arch-arm/
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/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
然后執(zhí)行這個(gè)文件
./build_android.sh
然后靜靜等待編譯就好了爆存,
編譯完成之后,我們會(huì)發(fā)現(xiàn)蝗砾,這個(gè)目錄下多了一個(gè)名為android
的目錄先较,里面存放的就是我們想要的動(dòng)態(tài)鏈接庫和頭文件。