FFMpeg3.3.3编译Android库文件
来源:互联网 发布:网络情歌《恋恋红尘》 编辑:程序博客网 时间:2024/05/17 23:28
新工作是做Android端视频编辑功能,初步方案有两种:采用Android SDK带有的MediaCodec+OpenGL方式实现和三方C库大名鼎鼎的FFmpeg,由于需要FFmpeg自带多种视频处理效果,3.14之后支持Android硬解(h264_mediacodec),还有不知道MediaCodec+OpenGL怎样实现视频裁剪成正方形的功能(如有知道的朋友可以留言),因此,采用FFmpeg方式实现。
废话不多说,先从第一步编译so库文件开始。本文编译的是最新的FFmpeg3.3.3。
从FFmpeg官网下载最新的FFmpeg压缩文件。解压后需要修改ffmpeg-3.3.3文件夹下的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)'
第二步是在ffmpeg-3.3.3文件夹新建一个文本文件,起名build.sh(名字可以自己随意起,在执行命令时注意名字统一),编写build.sh脚本文件。
#!/bin/bashexport TMPDIR=/Users/moore/Documents/ffmpeg/tempNDK=/Users/moore/Documents/Android/sdk/ndk-bundleSYSROOT=$NDK/platforms/android-21/arch-arm/TOOLCHAIN=/Users/moore/Documents/Android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64CPU=armPREFIX=/Users/moore/Documents/ffmpeg/outputADDI_CFLAGS="-marm"function build_one{ ./configure \ --prefix=$PREFIX \ --enable-shared \ --disable-static \ --disable-doc \ --disable-ffmpeg \ --disable-ffplay \ --disable-ffprobe \ --disable-ffserver \ --disable-doc \ --disable-symver \ --enable-small \ --enable-jni\ --enable-mediacodec\ --enable-decoder=h264_mediacodec\ --enable-hwaccel=h264_mediacodec\ --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \ --target-os=android \ --arch=arm \ --enable-cross-compile \ --sysroot=$SYSROOT \ --extra-cflags="-Os -fpic $ADDI_CFLAGS" \ --extra-ldflags="$ADDI_LDFLAGS" \ $ADDITIONAL_CONFIGURE_FLAG make clean make make install}build_onecd ../**这里有几点需要注意**
TMPDIR、NDK、SYSROOT和TOOLCHAIN需要换成你自己电脑的路径。还有TMPDIR路径要存在,不然编译的时候会警告,至少我的是这样的。
--enable-jni\ --enable-mediacodec\ --enable-decoder=h264_mediacodec\ --enable-hwaccel=h264_mediacodec\上面这几行是增加了Android硬解的支持。--target-os=android 这一点要注意,以前其他编译文件都是--target-os=linux。
编写build.sh文件后,打开终端,进入ffmpeg3.3.3文件夹下,执行命令,获取sh文件的权限
执行build_android.sh
执行时间稍长大概要等几分钟,随后会在ffmpeg3.3.3同目录的output文件夹下生成相应的库文件和头文件。而且库文件还告别了以前在在文件名上加版本号的格式,强迫症表示看起来爽多了。赶快享受自己编译最新版FFmpeg的快感吧,如果实在懒得编译的,留个邮箱我可以把库文件和头文件发给你。
- FFMpeg3.3.3编译Android库文件
- Ubuntu编译Android FFmpeg3.24
- FFmpeg3.1.1编译IOS静态库.a文件
- Ubuntu环境编译FFmpeg3.2.2-for-android
- Mac下面编译Android FFmpeg3.2.4
- ffmpeg3.3 编译 android 系统版本 32位 和64 位 动态库
- FFmpeg3.2最新版编译Mediacodec For Android脚本
- VS2015编译FFMpeg3.2.4
- win10 msys2 vs2015 ffmpeg3.3.3 编译 带x264 aac
- VS2015编译FFmpeg3.3.1源码
- VS2015编译FFmpeg3.3.1源码
- ffmpeg3
- FFmpeg3.1.3移植到Android
- CentOS7下编译安装ffmpeg3.1.5
- 使用VisualStudio2013编译ffmpeg3.1全过程
- win10 msys2 vs2015 ffmpeg3.2.2 编译
- win7 msys2 vs2015 ffmpeg3.2.2 编译
- ubuntu 下ffmpeg3.3的编译
- 为什么Docker会受欢迎?
- 响应式背景图片的几种方法
- 如何下载安装Eclipse插件MiddleGenIDE
- dding transactional method xxxx.update' with attribute: PROPAGATION_REQUIRED,ISOLATION_DEFAULT; ''
- 云计算的挑战:规划,流程和人员
- FFMpeg3.3.3编译Android库文件
- 0820 T3 好的网格
- javaseday24补充(基本数据类型流 编码表)
- hdu6114 Chess
- 如何输出对象属性?
- 【itoo】--spring+springmvc+maven+mybatis+Junit
- Socket学习笔记
- 快速枚举
- MAT dump分析程序内存