FFMPEG移植到android项目(一)ffmpeg的编译
2017-06-12 21:19
761 查看
准备
ubuntu14.04ffmpeg3.3.1
ndk
yasm
关于ndk环境的配置,参考文章:Android studio ndk编程——(一)。ffmpeg源码的下载参考官网:ffmpeg下载地址。
yasm的安装:
apt-get install yasm
编译
在准备过程都弄好后,下面开始ffmpeg的编译。解压ffmpeg
对下载好的ffmpeg文件进行解压。ubuntu14.04可以直接鼠标右键解压。
对解压后的ffmpeg文件的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)'
开始执行configure脚本
xiaoyao@xiaoyao-ThinkPad-Edge-E540:~/project/ffmpeg/ffmpeg-3.3.1$ ls arch.mak COPYING.GPLv2 ffmpeg_videotoolbox.c libswresample Changelog COPYING.GPLv3 ffplay.c libswscale cmdutils.c COPYING.LGPLv2.1 ffprobe.c LICENSE.md cmdutils_common_opts.h COPYING.LGPLv3 ffserver.c MAINTAINERS cmdutils.h CREDITS ffserver_config.c Makefile cmdutils_opencl.c doc ffserver_config.h presets common.mak ffmpeg.c INSTALL.md README.md compat ffmpeg_cuvid.c libavcodec RELEASE config.asm ffmpeg_dxva2.c libavdevice RELEASE_NOTES config.fate ffmpeg_filter.c libavfilter tests config.h ffmpeg.h libavformat tools config.log ffmpeg_opt.c libavresample VERSION config.mak ffmpeg_qsv.c libavutil version.sh configure ffmpeg_vaapi.c libpostproc CONTRIBUTING.md ffmpeg_vdpau.c library.mak xiaoyao@xiaoyao-ThinkPad-Edge-E540:~/project/ffmpeg/ffmpeg-3.3.1$ ./configure
在ffmpeg解压文件夹的同级建立文件夹simplefflib,此文件夹保存编译后生成的lib和includ文件。
xiaoyao@xiaoyao-ThinkPad-Edge-E540:~/project/ffmpeg$ ls build-ffmpeg-arm.sh ffmpeg-3.3.1 simplefflib build-ffmpeg-arm.sh~ ffmpeg-3.3.1.tar.bz2
在同级目录新建脚本build-ffmpeg-arm.sh。脚本内容为:
#!/bin/bash cd /home/xiaoyao/project/ffmpeg/ffmpeg-3.3.1 make clean export NDK=/home/xiaoyao/android-sdk-linux/ndk-bundle # 指定编译工具链 export PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt # 指定使用NDK Platform版本,这里指定的ndk platform的路径,一定要选择比# 你的目标机器使用的版本低的,比如你的手机是android-15版本,那么就选择低# 于15的 export PLATFORM=$NDK/platforms/android-23/arch-arm # 指定编译后的安装目录 export PREFIX=/home/xiaoyao/project/ffmpeg/simplefflib build_one(){ ./configure --target-os=linux --prefix=$PREFIX \ --enable-cross-compile \ --enable-runtime-cpudetect \ --disable-asm \ --arch=arm \ --cc=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi-gcc \ --cross-prefix=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi- \ --disable-stripping \ --nm=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi-nm \ --sysroot=$PLATFORM \ --enable-gpl --enable-shared --disable-static --enable-small \ --disable-ffprobe --disable-ffplay --disable-ffmpeg --disable-ffserver --disable-debug \ --extra-cflags="-fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -marm -march=armv7-a" } build_one make make install cd ..
根据自己的电脑配置不同,更改第二句以及NDK、PREBUILT、PLATFORM、PREFIX这几处的路径。
开始执行脚本,脚本执行完会在simplefflib文件夹中生成相应的文件。
xiaoyao@xiaoyao-ThinkPad-Edge-E540:~/project/ffmpeg/simplefflib$ ls include lib xiaoyao@xiaoyao-ThinkPad-Edge-E540:~/project/ffmpeg/simplefflib$ cd include/ xiaoyao@xiaoyao-ThinkPad-Edge-E540:~/project/ffmpeg/simplefflib/include$ ls libavcodec libavfilter libavutil libswresample libavdevice libavformat libpostproc libswscale xiaoyao@xiaoyao-ThinkPad-Edge-E540:~/project/ffmpeg/simplefflib/include$ cd .. xiaoyao@xiaoyao-ThinkPad-Edge-E540:~/project/ffmpeg/simplefflib$ ls include lib xiaoyao@xiaoyao-ThinkPad-Edge-E540:~/project/ffmpeg/simplefflib$ cd lib/ xiaoyao@xiaoyao-ThinkPad-Edge-E540:~/project/ffmpeg/simplefflib/lib$ ls libavcodec-57.so libavfilter.so libpostproc-54.so libswscale.so libavcodec.so libavformat-57.so libpostproc.so pkgconfig libavdevice-57.so libavformat.so libswresample-2.so libavdevice.so libavutil-55.so libswresample.so libavfilter-6.so libavutil.so libswscale-4.so xiaoyao@xiaoyao-ThinkPad-Edge-E540:~/project/ffmpeg/simplefflib/lib$
至此,ffmpeg的编译就完成了,剩下的就是将编译完的文件移植到android项目。
相关文章推荐
- cocos2dx在windows下编译运行移植android项目
- mingw编译ffmpeg(移植到android)
- EasyDarwin开源音频解码项目EasyAudioDecoder:基于ffmpeg的安卓音频(AAC、G726)解码库(第一部分,ffmpeg-android的编译)
- Ubuntu 下用NDK编译移植 ffmpeg 2.0 (配置最新版x264) 到android平台
- 第一次完成FFmepg的移植,编译ffmpeg4Android
- cygwin编译ffmpeg移植到android平台问题集锦
- ffmpeg android 移植编译出现的问题,求解
- ffmpeg移植到Android平台为什么用编译libjnivideo.so和libjniaudio.so
- FFmpeg移植Android编译生成单个库
- windows下编译最新版ffmpeg3.3-android,并通过CMake方式移植到Android studio2.3中
- ffmpeg for android 独立ndk以及android项目下编译 --ubuntu
- FFMPEG研究: FFmpeg的Android平台移植编译
- 移植ffmpeg到android的一个编译错误
- FFmpeg全新系列之3.2.2版本于CentOS6.5安装并实现Android移植编译-秒懂-你-逆袭必备
- ffmpeg for android 独立ndk以及android项目下编译 --ubuntu
- Cocos2dx3.2从零开始【一】Cocos2d-x 3.2项目创建和编译,移植到Android
- FFmpeg编译之后的Android平台移植---------阿冬
- Ubuntu 下用NDK编译移植 FFmpeg 2.0 (配置最新版x264) 到Android平台
- FFmpeg的Android平台移植—编译篇
- ffmpeg移植android编译问题解决