写点什么

Native 开发工具之交叉编译移植(五),android 开发基础教程视频

用户头像
Android架构
关注
发布于: 刚刚

然后编写用于编译的 Shell 脚本,在 ffmpeg-2.6.9 根目录下执行:vim build_android.sh


#!/bin/bashmake cleanexport NDK=/home/wuhuannan/Android/Sdk/ndk-bundleexport SYSROOT=NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64export CPU=armexport PREFIX=CPUexport ADDI_CFLAGS="-marm"


./configure --target-os=linux


--prefix=$PREFIX --arch=arm


--disable-doc


--enable-shared


--disable-static


--disable-yasm


--disable-symver


--enable-gpl


--disable-ffmpeg


--disable-ffplay


--disable-ffprobe


--disable-ffserver


--disable-doc


--disable-symver


--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi-


--enable-cross-compile


--sysroot=$SYSROOT


--extra-cflags="-Os -fpic $ADDI_CFLAGS"


--extra-ldflags="$ADDI_LDFLAGS"


$ADDITIONAL_CONFIGURE_FLAGmake cleanmakemake install


然后修改根目录下的 configure 文件。


#找到并注释以下代码 #SLIBNAME_WITH_MAJOR='(LIBMAJOR)'#LIB_INSTALL_EXTRA_CMD='$(LIBDIR)/(LIBNAME)"'#SLIB_INSTALL_NAME='(SLIBNAME_WITH_VERSION)'#SLIB_INSTALL_LINKS='(SLIBNAME)'


#在上述代码下添加以下代码 SLIBNAME_WITH_MAJOR='(FULLNAME)-(SLIBSUF)'LIB_INSTALL_EXTRA_CMD='$(LIBDIR)/(SLIBNAME_WITH_MAJOR)'SLIB_INSTALL_LINKS='$(SLIBNAME)'


修改文件权限:


chmod +x build_android.sh configure


执行一下脚本开始编译:


./build_android.sh


约几分钟后,编译生成的动态库文件如下:


二、FFmpeg+LIBX264+FACC 交叉编译 实现 264 流录制 AVI 文件

需求:把标准的 h264 流保存成 avi 格式的实现文件,所以须要 h264 的解码器,avi 文件容器,传输协议类型是文件。这些会体如今 ffmpeg 的 configure 配置上--disable-everything --enable-protocol=file --enable-encoder=libx264 --enable-encoder=libfaac --enable-libx264 --enable-gpl --enable-libfaac --enable-nonfree --enable-muxer=avi --enable-demuxer=avi。1 .下载 libx264 ffmpeg facc 下载的三个包:x264-snapshot-20120718-2245-stable.tar.bz ffmpeg-0.11.1.tar.gz faac-1.28.tar.bz22 .交叉编译 libx264


2.1 解压 x264-snapshot-20120718-2245-stable.tar.bz 到文件夹 /root/workspace/multimedia/ffpmeg


2.2 进入文件夹 /root/workspace/multimedia/ffpmeg/x264-snapshot-stable


2.3 创建文件夹 /root/workspace/multimedia/ffpmeg/out


2.4 运行 configure 构造 Makefile


./configure --enable-static --host=arm-linux --disable-asm --prefix=/root/workspace/multimedia/ffpmeg/out


2.5 改动 config.mak


CC=/opt/arm-2009q1-203/bin/arm-none-linux-gnueabi-gcc


LD=/opt/arm-2009q1-203/bin/arm-none-linux-gnueabi-gcc -o


AR=/opt/arm-2009q1-203/bin/arm-none-linux-gnueabi-ar rc


RANLIB=/opt/arm-2009q1-203/bin/arm-none-linux-gnueabi-ranlib


STRIP=/opt/arm-2009q1-203/bin/arm-none-linux-gnueabi-strip


保存


2.6 运行 make


2.7 运行 make install,结束。


编译好的静态库 放在 out 文件夹里


3 交叉编译 faac3.1 解压 ffmpeg 到文件夹/root/workspace/multimedia/ffmpeg


3.2 进入文件夹 /root/workspace/multimedia/ffmpeg/ffmpeg-1.0


3.3 运行 configure 构造 Makefile


./configure --enable-static --host=arm-linux --with-mp4v2 --prefix=/root/workspace/multimedia/ffpmeg/out CC=/opt/dm6467t/arm-2009q1-203/bin/arm-none-linux-gnueabi-gcc CXX=/opt/dm6467t/arm-2009q1-203/bin/arm-none-linux-gnueabi-g++


3.4 运行 make


3.5 运行 make install


3.6 运行 make clean,结束。


编译好的静态库,放在 out 文件夹里 尽管配置了静态库但动态库已编译了。


4 交叉编译 ffmpeg4.1 解压 ffmpeg 到文件夹/root/workspace/multimedia/ffmpeg


4.2 进入文件夹 /root/workspace/multimedia/ffmpeg/ffmpeg-1.0


4.3 运行 configure 构造 Makefile


./configure --arch=arm --target-os=linux --cc=/opt/arm-2009q1-203/bin/arm-none-linux-gnueabi-gcc cxx=/opt/arm-2009q1-203/bin/arm-none-linux-gnueabi-g++ strip=/opt/arm-2009q1-203/bin/arm-none-linux-gnueabi-strip --enable-cross-compile --disable-avdevice --disable-avfilter --disable-network --enable-static --disable-shared --enable-small --disable-debug --disable-everything --enable-protocol=file --enable-encoder=libx264 --enable-encoder=libfaac --enable-libx264 --enable-gpl --enab


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


le-libfaac --enable-nonfree --enable-muxer=avi --enable-demuxer=avi --prefix=/root/workspace/smart-box-apps-v1.0/sbox_app/multimedia/ffpmeg/out --extra-cflags=-I/root/workspace/smart-box-apps-v1.0/sbox_app/multimedia/ffpmeg/out/include --extra-ldflags=-L/root/workspace/smart-box-apps-v1.0/sbox_app/multimedia/ffpmeg/out/lib


4.4 运行 make


4.5 运行 make install,结束。


编译好的静态库 放在 out 文件夹里。


说明: --disable-everything 一定要关闭全部,然后再打开你须要的模块。不然编译的静态库有几十兆


5 使用 ffmpeg 库改动原有的 Makefile 加入:INCLUDES+=-I$(SBOX_APP_DIR)/multimedia/ffpmeg/out/include


LIBS+=$(SBOX_APP_DIR)/multimedia/ffpmeg/out/lib/libavformat.a


LIBS+=$(SBOX_APP_DIR)/multimedia/ffpmeg/out/lib/libavcodec.a

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
Native开发工具之交叉编译移植(五),android开发基础教程视频