Android(安卓)FFmpeg(一)、Windows编译So
16lz
2021-01-26
Windows环境编译FFmpeg
- Windows环境编译FFmpeg
- MinGW下载
- NDK下载
- FFmpeg下载
- 开始编译
- 编译成一个ffmpeg.so
Windows环境编译FFmpeg
Windows10下编译FFmpeg。
MinGW下载
MinGW下载地址,我这里安装D盘。并添加到系统环境变量中
打开MinGW\bin\mingw-get.exe。打开后,点击Basic Setup下载下图的插件。
NDK下载
NDK下载地址,这里下载android-ndk-r15c-windows-x86_64,不建议下载高的版本,最后的编译可能出错。下载到相关目录,解压即可。
FFmpeg下载
FFmpeg官网下载,这里我下载的是FFmpeg 3.3.9版本。解压到相关目录下。
开始编译
- 修改E:\ffmpeg-3.3.9下载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)'
2.E:\ffmpeg-3.3.9目录下新建build_andorid.sh,输入以下内容,注意修改相关的目录
#!/bin/bashexport TMPDIR=E:/ffmpeg-3.3.9/tmpdir #新建的临时目录NDK=E:/Android/android-ndk-r15c #Ndk目录 SYSROOT=$NDK/platforms/android-14/arch-arm #选择编译版本TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64CPU=armPREFIX=E:/ffmpeg-3.3.9/output/$CPU #so输出的目录ADDI_CFLAGS="-Os -fpic -marm"function build_one{./configure \--prefix=$PREFIX \--enable-shared \--enable-static \--enable-asm \--enable-neon \--disable-doc \--disable-ffmpeg \--disable-ffplay \--disable-ffprobe \--disable-ffserver \--disable-doc \--disable-symver \--enable-pthreads \--enable-small \--enable-jni \--enable-mediacodec \--enable-runtime-cpudetect \--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \--target-os=android \--arch=arm \--enable-cross-compile \--sysroot=$SYSROOT \--extra-cflags="$ADDI_CFLAGS" \--extra-ldflags="$ADDI_LDFLAGS" \$ADDITIONAL_CONFIGURE_FLAGmake cleanmakemake install}build_oneread -p "Press any key to continue."
3.打开D:\MinGW\msys\1.0\msys.bat进入到ffmpeg3.3.9目录下
大约10几分钟后,编译完成
大约有7个so
编译成一个ffmpeg.so
编译成7个so,在配置时比较麻烦。我们修改build_android.sh文件,
#!/bin/bashexport TMPDIR=E:/ffmpeg-3.3.9/tmpdirNDK=E:/Android/android-ndk-r15cSYSROOT=$NDK/platforms/android-14/arch-arm/TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64CPU=armPREFIX=E:/ffmpeg-3.3.9/build_outputADDI_CFLAGS="-marm"ADDI_LDFLAGS=""function build_arm{./configure \ --prefix=$PREFIX \ --enable-static \ --disable-shared \ --disable-doc \ --disable-programs \ --disable-symver \ --disable-encoders \ --enable-encoder=aac \ --enable-encoder=mjpeg \ --enable-encoder=png \ --disable-decoders \ --enable-decoder=aac \ --enable-decoder=aac_latm \ --enable-decoder=h264 \ --enable-decoder=hevc \ --enable-decoder=mpeg4 \ --enable-decoder=mjpeg \ --enable-decoder=png \ --disable-demuxers \ --enable-demuxer=image2 \ --enable-demuxer=h264 \ --enable-demuxer=hevc \ --enable-demuxer=aac \ --enable-demuxer=avi \ --enable-demuxer=mpc \ --enable-demuxer=mov \ --disable-parsers \ --enable-parser=aac \ --enable-parser=ac3 \ --enable-parser=h264 \ --enable-parser=hevc \ --enable-small \ --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \ --target-os=linux \ --arch=arm \ --enable-cross-compile \ --sysroot=$SYSROOT \ --extra-cflags="-Os -fpic $ADDI_CFLAGS" \ --extra-ldflags="$ADDI_LDFLAGS" \ $ADDITIONAL_CONFIGURE_FLAGmake cleanmake -j8make install $TOOLCHAIN/bin/arm-linux-androideabi-ld \-rpath-link=$SYSROOT/usr/lib \-L$SYSROOT/usr/lib \-L$PREFIX/lib \-soname libffmpeg.so -shared -nostdlib -Bsymbolic --whole-archive --no-undefined -o \$PREFIX/libffmpeg.so \$PREFIX/lib/libavcodec.a \$PREFIX/lib/libavfilter.a \$PREFIX/lib/libswresample.a \$PREFIX/lib/libavformat.a \$PREFIX/lib/libavutil.a \$PREFIX/lib/libswscale.a \$PREFIX/lib/libavdevice.a \-lc -lm -lz -ldl -llog --dynamic-linker=/system/bin/linker \$TOOLCHAIN/lib/gcc/arm-linux-androideabi/4.9.x/libgcc.a} build_arm
运行./build_android.sh
编译成功如下:
更多相关文章
- 加快Android(安卓)Studio的编译速度
- Android(安卓)源码中增加自定义系统服务
- x4412开发板&ibox卡片电脑项目实战5-修改内核LOGO
- 修改购物车产品数量
- android gradle 修改生成的apk的名字
- android系统版本代号
- Android(安卓)ADT 10.0.0下载与安装
- Android(安卓)SDK Manager下载
- Android中程序乱码问题解决