欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

手把手教你从Windows编译ffmpeg so包

程序员文章站 2022-06-23 09:04:19
安装编译环境:MinGW:https://sourceforge.net/projects/mingw/ ndk-bundle:直接用AndroidStudio下载的,教程https://www.jianshu.com/p/8adf85732ca0ffmpeg:http://ffmpeg.org/download.html 请直接用ffmpeg-3.2.15版本,因为不同的版本,编译会冒出其它问题,为了一切顺利,直接用指定版本1.安装MinGW,选中以下选项。2.在......

安装编译环境:

MinGW:https://sourceforge.net/projects/mingw/   

ndk-bundle: 直接用AndroidStudio下载的,教程https://www.jianshu.com/p/8adf85732ca0

ffmpeg:http://ffmpeg.org/download.html  请直接用ffmpeg-3.2.15 版本,因为不同的版本,编译会冒出其它问题,为了一切顺利,直接用指定版本

1.安装MinGW,选中 以下选项。

手把手教你从Windows编译ffmpeg so包

 

2.在ffmpeg目录下找到config配置文件 ,修改 

将该文件中的如下四行:
  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.新建build_android.sh(有的话直接修改)脚本文件(针对Android),内容如下:  (红色字体为需要修改的地方,分别是 ffmpeg 根目录,ndk路径,ffmpeg 目录。为了防止出错,也可以在sdk下载路径,看看是否存在 TOOLCHAIN  SYSROOT  ISYSROOT ASM 路径)。修改完后,用nodepad++之类的软件打开,点编辑->文档格式转换->转为unix。在ffmpeg 目录下新建一个空文件夹ffmpegtemp,必须建,不然会异常。

#!/bin/bash

export TMPDIR=d:/Downloads/ffmpeg-3.2.15/ffmpeg-3.2.15/ffmpegtemp #这句很重要,不然会报错 unable to create temporary file in

# NDK的路径,根据自己的安装位置进行设置

NDK=E:/Android/SDK/ndk-bundle  #

# 编译针对的平台,可以根据自己的需求进行设置

# 这里选择最低支持android-14, arm架构,生成的so库是放在

# libs/armeabi文件夹下的,若针对x86架构,要选择arch-x86

#!/bin/bash

PREFIX=d:/Downloads/ffmpeg-3.2.15/ffmpeg-3.2.15/Android/$CPU  
API=19
PLATFORM=arm-linux-androideabi
TOOLCHAIN=$NDK/toolchains/$PLATFORM-4.9/prebuilt/windows-x86_64
SYSROOT=$NDK/platforms/android-$API/arch-arm/
ISYSROOT=$NDK/sysroot
ASM=$ISYSROOT/usr/include/$PLATFORM
CPU=armv7-a

build_one()
{
./configure \
--prefix=$PREFIX \
--target-os=android \
--arch=arm \
--cpu=$CPU \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--disable-asm \
--enable-cross-compile \
--enable-shared \
--disable-static \
--enable-runtime-cpudetect \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-doc \
--disable-symver \
--enable-small \
--enable-gpl --enable-nonfree --enable-version3 --disable-iconv \
--enable-jni \
--enable-mediacodec \
--disable-decoders --enable-decoder=vp9 --enable-decoder=h264 --enable-decoder=mpeg4 --enable-decoder=aac \
--disable-encoders --enable-encoder=vp9_vaapi --enable-encoder=h264_nvenc --enable-encoder=h264_v4l2m2m --enable-encoder=hevc_nvenc \
--disable-demuxers --enable-demuxer=rtsp --enable-demuxer=rtp --enable-demuxer=flv --enable-demuxer=h264 \
--disable-muxers --enable-muxer=rtsp --enable-muxer=rtp --enable-muxer=flv --enable-muxer=h264 \
--disable-parsers --enable-parser=mpeg4video --enable-parser=aac --enable-parser=h264 --enable-parser=vp9 \
--disable-protocols --enable-protocol=rtmp --enable-protocol=rtp --enable-protocol=tcp --enable-protocol=udp \
--disable-bsfs \
--disable-indevs --enable-indev=v4l2 \
--disable-outdevs \
--disable-filters \
--disable-postproc \i
--sysroot=$SYSROOT \
--extra-cflags="-I$ASM -isysroot $ISYSROOT -D__ANDROID_API__=$API -U_FILE_OFFSET_BITS -Os -fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -marm" \
--extra-ldflags="-marm"
$ADDITIONAL_CONFIGURE_FLAG
}
build_one
make clean
make -j4
make install

4.打开 minGW根目录\msys\1.0\msys.bat 找到位置,直接双击打开。cd build_android.sh所在根目录 。例子:cd d:/Downloads/ffmpeg-3.2.15/ffmpeg-3.2.15 回车 然后输入  ./build_android.sh  回车。等待一段时间。

5.编译完成 ,在ffmpeg根目录生成一个Android文件夹。里面就是编译的so文件。  

本文地址:https://blog.csdn.net/u010168733/article/details/110646421