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版本。解压到相关目录下。

开始编译

  1. 修改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
编译成功如下:

更多相关文章

  1. 加快Android(安卓)Studio的编译速度
  2. Android(安卓)源码中增加自定义系统服务
  3. x4412开发板&ibox卡片电脑项目实战5-修改内核LOGO
  4. 修改购物车产品数量
  5. android gradle 修改生成的apk的名字
  6. android系统版本代号
  7. Android(安卓)ADT 10.0.0下载与安装
  8. Android(安卓)SDK Manager下载
  9. Android中程序乱码问题解决

随机推荐

  1. 使用GDB调试Android(安卓)NDK native(C/C
  2. android之点击事件ImageView切换
  3. Android对IO进行读写操作实例
  4. android 滑动欢迎界面
  5. android 用ListView实现表格样式
  6. android 游戏开发-libgdx(一)
  7. android 线程方式打印log到sd卡
  8. android 获取手机中所有的传感器Sensor类
  9. android 入门 Gallery
  10. Android 断点续传