Windows 生成ffmpeg安卓全平台so
文章目錄
- 前言
- 一、搭建環境
- 1、下載NDK
- 2、安裝msys2
- (1)運行msys2
- (2)安裝必要工具
- 3、下載ffmpeg源碼
- 二、生成
- 1、編寫shell
- (1)模板
- (2)設置TOOLCHAIN
- (3)設置API
- 2、修改configure
- 3、使用msys2生成
- (1)打開msys2
- (2)cd源碼目錄
- (3)調用shell
- 3、找到安裝目錄
- 三、生成好的包
- 總結
前言
做安卓開發的時候,需要實現拉流渲染視頻之類的功能,使用ffmpeg比較方便。但是要生成ffmpeg的安卓庫是有點麻煩的,需要使用ndk的工具鏈以及shell。相對來說在Linux上操作是比較容易的,其實Windows上生成也不是很難,shell是基本一致的。
一、搭建環境
1、下載NDK
我們首先需要有NDK的工具鏈才能進行交叉編譯,如果安裝了AndroidSudio則找到NDK的目錄即可。或者下載Windows版本的NDK:https://developer.android.google.cn/ndk/downloads/
2、安裝msys2
msys2是Windows的shell環境。下載地址:https://www.msys2.org/。下載完成后直接安裝。安裝完成后在C:\msys64找到msys2.exe并運行,進入控制臺。
(1)運行msys2
(2)安裝必要工具
在msys2中輸入:
pacman -S gcc make nasm yasm3、下載ffmpeg源碼
http://ffmpeg.org/download.html
比如當前最新版本5.0.1如下圖所所示:
二、生成
1、編寫shell
新建一個build.sh的文件在ffmpeg目錄中。添加如下內容:
(1)模板
#!/bin/bash #ndk工具鏈路徑 -可配置 TOOLCHAIN=C:/Users/xin/AppData/Local/Android/Sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/windows-x86_64 #ndk api版本 -可配置 API=29 SYSROOT=$TOOLCHAIN/sysroot function build_start() { make clean ./configure --target-os=android \ --prefix=$PREFIX \ --arch=$ARCH \ --cpu=$CPU \ --cc=$CC \ --cxx=$CXX \ --cpu=$CPU \ --strip=$TOOLCHAIN/bin/llvm-strip \ --nm=$TOOLCHAIN/bin/llvm-nm \ --enable-shared \ --disable-static \ --enable-gpl \ --cross-prefix=$CROSS_PREFIX \ --enable-cross-compile \ --sysroot=$SYSROOT \ --extra-cflags="-Os -fpic $OPTIMIZE_CFLAGS" \ --extra-ldflags="$ADDI_LDFLAGS" \ $ADDITIONAL_CONFIGURE_FLAG make -j8 make install } CPU=armv7-a ARCH=arm CROSS_PREFIX=$TOOLCHAIN/bin/armv7a-linux-androideabi$API- CC=${CROSS_PREFIX}clang CXX=CC=${CROSS_PREFIX}clang++ PREFIX=./android/${CPU}_${API}/ OPTIMIZE_CFLAGS="-march=$CPU" build_start CPU=armv8-a ARCH=arm64 CROSS_PREFIX=$TOOLCHAIN/bin/aarch64-linux-android$API- CC=${CROSS_PREFIX}clang CXX=CC=${CROSS_PREFIX}clang++ PREFIX=./android/${CPU}_${API}/ OPTIMIZE_CFLAGS="-march=$CPU" build_start CPU=x86 ARCH=x86 CROSS_PREFIX=$TOOLCHAIN/bin/i686-linux-android$API- CC=${CROSS_PREFIX}clang CXX=CC=${CROSS_PREFIX}clang++ PREFIX=./android/${CPU}_${API}/ OPTIMIZE_CFLAGS="-march=i686" ADDITIONAL_CONFIGURE_FLAG=--disable-asm build_start CPU=x86-64 ARCH=x86_64 CROSS_PREFIX=$TOOLCHAIN/bin/x86_64-linux-android$API- CC=${CROSS_PREFIX}clang CXX=CC=${CROSS_PREFIX}clang++ PREFIX=./android/${CPU}_${API}/ OPTIMIZE_CFLAGS="-march=$CPU" build_start(2)設置TOOLCHAIN
參照模板的路徑設置TOOLCHAIN,到windows-x86_64這一級目錄。注意將反斜杠改為正斜杠。
TOOLCHAIN=NDK TOOLCHAIN路徑(3)設置API
根據需要設置API版本如:
API=292、修改configure
修改ffmpeg源碼目錄的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)'3、使用msys2生成
打開msys2.exe。cd到ffmpeg源碼目錄
(1)打開msys2
(2)cd源碼目錄
直接cd到ffmpeg源碼目錄即可,需要注意加雙反斜杠避免轉義。比如
cd D:\\ffmpeg-5.0.1(3)調用shell
./build.sh注:第一次生成出現如下報錯是正常的,繼續等待即可。
3、找到安裝目錄
生成完成在ffmpeg源碼目錄的android文件夾下即可找到所有so
三、生成好的包
已測試可用的生成好的包
ffmpeg5.0.1安卓全平臺so動態庫
總結
總的來說在Windows上生成ffmpeg還是不難的,只是網上資料較少而且不齊全,導致容易生成失敗甚至因為存在rm -rf導致整個磁盤被清空。最好的方式還是先在Linux生成成功后,再將方法移植到Windows。
總結
以上是生活随笔為你收集整理的Windows 生成ffmpeg安卓全平台so的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 服务器内存延迟,内存带宽、延迟性能测试
- 下一篇: spss相关性分析_关公配赤兔——因子分