ffmpeg for android (windows環境) (一)

今天201703241151

完全沒有編譯ffmpeg的經驗,通過幾天的上網蒐集資料,進行第一次的嘗試,如果編譯成功了,就會看到此文,編譯不成功自然看不到。

首先,先下載一個MinGW,博主windows是64位的,自然下載的是64位的

MinGW官網:http://www.mingw.org/

64位下載地址:https://sourceforge.net/projects/mingw-w64/files/?source=navbar

安裝的時候注意,選擇Architecture爲x86_64,其他不變,然後就是等待安裝,安裝時間還是挺長的。

博主的bin的安裝路徑是:C:\Program Files\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64\bin

將bin路徑加入到系統的環境變量中的path路徑中

加入之後,打開命令行,輸入gcc -v看到最後一排gcc version 6.3.0 (x86_64-posix-seh-rev1, Built by MinGW-W64 project)表示安裝成功

下載一個msys,下載地址爲:https://sourceforge.net/projects/mingwbuilds/files/external-binary-packages/

找到README.txt下的第一個文件,點擊即可下載

解壓之後,複製msys文件夾到C:\Program Files\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64文件夾

打開msys文件夾,打開msys.bat文件,雙擊啓動,提示找不到Program,決定卸載MinGW重新裝

至於怎麼卸載,就不用多說了

重新安裝,此時,安裝路徑我直接選的C盤根目錄,希望,它自己會給個子目錄,不然,就坑爹了,還是要注意選擇x86_64位的,然後,等待安裝,安裝時間還是很長。。

安裝完成了,但是爲啥裝到桌面上了,卸載,重新裝,這次給了個子目錄,c盤的mingw64文件夾,然後,等待時間一如既往的長。

安裝完成了,環境->gcc -v沒毛病

複製msys到C:\mingw64\mingw64文件夾

打開msys文件夾,雙擊啓動msys.bat,打開了,沒毛病。

表示MinGW已經安裝完成了。

然後,下載一個FFmpeg源碼

FFmpeg官網:http://ffmpeg.org/

下載地址:http://ffmpeg.org/download.html,點那個最大的Download,博主這邊的版本是ffmpeg-3.2.4

然後,其實博主是兩眼一抹黑的,先摸索摸索

沒辦法,先按照前人的經驗來做吧

修改配置文件ffmpeg-3.2.4\configure

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)'
據說,這樣編譯出來的so文件才能符合android使用,至於符不符合ios,博主也不知道

在ffmpeg-3.2.4文件夾中新建個文件build_android_arm.sh

提示一下,博主之前電腦裏一直有安裝ndk,版本是r11c,但是,據說,如果你想要兼容到4.0,那就有必要使用4.0對應的ndk版本,再議吧

目前博主還是使用r11c來編譯,主要是先看能不能成功

在build_android_arm.sh文件中輸入如下,注意前後不要有空格

export TMPDIR=C:/Users/Administrator/Desktop/tmpdir
export NDK=C:/Users/Administrator/AppData/Roaming/forever/android/android-ndk-r11c
export SYSROOT=$NDK/platforms/android-14/arch-arm/
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64
export PREFIX=C:/Users/Administrator/Desktop/arm/
CPU=arm
ADDI_CFLAGS="-marm"
function build_one
{
./configure \
--target-os=linux \
--prefix=$PREFIX \
--arch=arm \
--disable-asm --disable-stripping --disable-static --disable-ffprobe --disable-ffplay --disable-doc --disable-ffmpeg --disable-ffserver --disable-debug --disable-symver \
--enable-cross-compile --enable-runtime-cpudetect --enable-gpl --enable-shared --enable-small \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
build_one
其中,TMPDIR、NDK、SYSROOT、TOOLCHAIN、PREFIX變量爲自己的具體情況

TMPDIR爲臨時目錄

NDK爲NDK目錄

SYSROOT爲你想兼容到的最低版本

TOOLCHAIN就照着我寫的找你自己的對應的路徑

PREFIX爲最後生成的文件的路徑

打開msys.bat,定位到你的ffmpeg-3.2.4,注意路徑用反斜槓/

然後輸入build_android_arm.sh回車

等待幾分鐘後,咔咔咔咔一堆,這速度貌似不快

然後,會看到各種你認爲的異常,但是隻要它的編譯沒有斷,應該就沒有問題

201703241318-201703241326

8分鐘就編譯完了,接下來,該去咱的PREFIX指定目錄去看看文件了

果然兩個文件夾,一個include和一個lib

然後該幹啥,博主還不知道,研究研究寫第二篇。

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