windows10下编译ffmpeg for android----编译成功_msys编译ffmpeg for andoid --extra-cflags不设置可以吗

完成后配置环境变量:

之后在安装目录找到msys.bat并打开,后面会用到。

第三步,找到ffmpeg目录下的configure文件,将如下代码(有人反馈说复制下面的代码后每行末尾会多出两个空格,发现确实如此,因此复制后需要手动去掉空格))

[java] 
view plain
 copy

  1. SLIBNAME_WITH_MAJOR=‘ ( S L I B N A M E ) . (SLIBNAME). (SLIBNAME).(LIBMAJOR)’
  2. LIB_INSTALL_EXTRA_CMD=‘$ ( R A N L I B )   " (RANLIB) " (RANLIB) "(LIBDIR)/$(LIBNAME)"’
  3. SLIB_INSTALL_NAME=‘$(SLIBNAME_WITH_VERSION)’
  4. SLIB_INSTALL_LINKS=‘ ( S L I B N A M E _ W I T H _ M A J O R )   (SLIBNAME\_WITH\_MAJOR)  (SLIBNAME_WITH_MAJOR) (SLIBNAME)’

替换为:

[java] 
view plain
 copy

  1. SLIBNAME_WITH_MAJOR=‘ ( S L I B P R E F ) (SLIBPREF) (SLIBPREF)(FULLNAME)- ( L I B M A J O R ) (LIBMAJOR) (LIBMAJOR)(SLIBSUF)’
  2. LIB_INSTALL_EXTRA_CMD=‘$ ( R A N L I B )   " (RANLIB) " (RANLIB) "(LIBDIR)/$(LIBNAME)"’
  3. SLIB_INSTALL_NAME=‘$(SLIBNAME_WITH_MAJOR)’
  4. SLIB_INSTALL_LINKS=‘$(SLIBNAME)’

我的

#SLIBNAME_WITH_MAJOR=‘ ( S L I B N A M E ) . (SLIBNAME). (SLIBNAME).(LIBMAJOR)’
#LIB_INSTALL_EXTRA_CMD=‘$ ( R A N L I B ) " (RANLIB) " (RANLIB)"(LIBDIR)/KaTeX parse error: Expected 'EOF', got '#' at position 16: (LIBNAME)"' #̲SLIB\_INSTALL\_…(SLIBNAME_WITH_VERSION)’
#SLIB_INSTALL_LINKS=‘$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)’
VERSION_SCRIPT_POSTPROCESS_CMD=“cat”

SLIBNAME_WITH_MAJOR=‘ ( S L I B P R E F ) (SLIBPREF) (SLIBPREF)(FULLNAME)- ( L I B M A J O R ) (LIBMAJOR) (LIBMAJOR)(SLIBSUF)’
LIB_INSTALL_EXTRA_CMD=‘$ ( R A N L I B ) " (RANLIB) " (RANLIB)"(LIBDIR)/ ( L I B N A M E ) " ′ S L I B _ I N S T A L L _ N A M E = ′ (LIBNAME)"' SLIB\_INSTALL\_NAME=' (LIBNAME)"SLIB_INSTALL_NAME=(SLIBNAME_WITH_MAJOR)’
SLIB_INSTALL_LINKS=‘$(SLIBNAME)’

如下图,这是因为android so命名的需要。

第四步,新建一个build_android.sh,里面的代码如下:(有人反馈说复制下面的代码后每行末尾会多出两个空格,发现确实如此,因此复制后需要手动去掉空格)

#!/bin/bash
export TMPDIR=G:/ffmpeg/tmpdir
NDK=E:/androidstudio/sdk/ndk-bundle
SYSROOT= N D K / p l a t f o r m s / a n d r o i d − 18 / a r c h − a r m T O O L C H A I N = NDK/platforms/android-18/arch-arm TOOLCHAIN= NDK/platforms/android18/archarmTOOLCHAIN=NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64
CPU=arm
PREFIX=G:/ffmpeg/output/$CPU

ADDI_CFLAGS=“-Os -fpic -marm”

function build_one
{
./configure \
–prefix= P R E F I X   − − e n a b l e − s h a r e d   − − e n a b l e − s t a t i c   − − e n a b l e − a s m   − − e n a b l e − n e o n   − − d i s a b l e − d o c   − − d i s a b l e − f f m p e g   − − d i s a b l e − f f p l a y   − − d i s a b l e − f f p r o b e   − − d i s a b l e − f f s e r v e r   − − d i s a b l e − d o c   − − d i s a b l e − s y m v e r   − − e n a b l e − p t h r e a d s   − − e n a b l e − s m a l l   − − e n a b l e − j n i   − − e n a b l e − m e d i a c o d e c   − − e n a b l e − r u n t i m e − c p u d e t e c t   − − c r o s s − p r e f i x = 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= PREFIX enableshared enablestatic enableasm enableneon disabledoc disableffmpeg disableffplay disableffprobe disableffserver disabledoc disablesymver enablepthreads enablesmall enablejni enablemediacodec enableruntimecpudetect crossprefix=TOOLCHAIN/bin/arm-linux-androideabi- \
–target-os=android \
–arch=arm \
–enable-cross-compile \
–sysroot= S Y S R O O T   − − e x t r a − c f l a g s = " SYSROOT \ --extra-cflags=" SYSROOT extracflags="ADDI_CFLAGS" \
–extra-ldflags=“$ADDI_LDFLAGS” \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
build_one

read -p “Press any key to continue.”

其中,

TMPDIR是个临时目录,编译时需要用到,这个可以随意指定路径,但必须保证路径存在;

NDK则替换为你本机的ndk路径;

SYSROOT根据你的本机设置,但不要大于你的target,比如你的target是22,就不要用 大于android-22的;

PREFIX则是编译后so的存放地址,路径可以随便指定。

–enable-shared:生成动态库so
–enable-static:生成静态库

关于参数的作用,可以打开ffmpeg源码目录下的configure文件,里面都有对应的英文说明,举个栗子:“–enable-mediacodec      enable Android MediaCodec support [no]”

特别需要说明的是target-os,这个如果指定linux的话则需要执行第三步的文件修改,如果是android则可以直接略过第三步,因为在configure文件中已经对target-os作了判断,如果是android会帮我们做类似于第三步的操作。


第五步,在刚刚打开的mingw中切换到ffmpeg路径下,执行build_android.sh

最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上我搜集整理的2019-2021BATJ 面试真题解析,我把大厂面试中常被问到的技术点整理成了PDF,包知识脉络 + 诸多细节。

节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

《960全网最全Android开发笔记》

《379页Android开发面试宝典》

历时半年,我们整理了这份市面上最全面的安卓面试题解析大全
包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。

如何使用它?

1.可以通过目录索引直接翻看需要的知识点,查漏补缺。
2.五角星数表示面试问到的频率,代表重要推荐指数

《507页Android开发相关源码解析》

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

腾讯、字节跳动、阿里、百度等BAT大厂 2019-2021面试真题解析

资料太多,全部展示会影响篇幅,暂时就先列举这些部分截图

识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

[外链图片转存中…(img-4b5t335I-1720102307784)]

腾讯、字节跳动、阿里、百度等BAT大厂 2019-2021面试真题解析

[外链图片转存中…(img-sbcfOYtX-1720102307784)]

资料太多,全部展示会影响篇幅,暂时就先列举这些部分截图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值