android移植ffmpeg的编译

一,ffmpeg编译(版本ffmpeg-HEAD-b2ad33d.tar)

1,安装汇编编译器[sudo apt-get install yasm].


2,ffmpeg根目录放编译脚本build_android.sh内容如下:(备注:NDK相关路径按自己实际情况修改,若需包含编译x264和mp3的话红色部分用于指定x264和mp3的头文件和库所在目录。)

#!/bin/bash
NDk=/home/lch/Desktop/android-ndk-r9d
SYSROOT=/home/lch/Desktop/android-ndk-r9d/platforms/android-9/arch-arm/
TOOLCHAIN=/home/lch/Desktop/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86
#have no surpport x264.--enable-x264
function build_one
{
./configure --enable-cross-compile \
--arch=arm \
--target-os=linux \
--disable-stripping \
--prefix=./output \
--enable-version3 \
--enable-libmp3lame \
--disable-shared \
--enable-static \
--enable-gpl \
--enable-memalign-hack \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic -Wfatal-errors -Wno-deprecated" \
--enable-decoder=mjpeg \
--enable-demuxer=mjpeg \
--enable-parser=mjpeg \
--enable-demuxer=image2 \
--enable-muxer=mp4 \
--enable-encoder=libx264 \
--enable-libx264 \
--enable-decoder=h264 \
--enable-decoder=rawvideo \
--enable-protocol=file \
--enable-hwaccels \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-network \
--enable-filter=buffer \
--enable-filter=buffersink \
--disable-demuxer=v4l \
--disable-demuxer=v4l2 \
--disable-indev=v4l \
--disable-indev=v4l2 \
--extra-cflags="-I/home/lch/dennis/jni/x264  -I../libmp3lame" \
--extra-ldflags="-L/home/lch/dennis/jni/x264 -L../libmp3lame" 



    
}
build_one


3,运行脚本。

4,make

5,make install,即可在prefix目录下得到相关库。


二,x264的编译。

1,在x264根目录下放编译脚本build264.sh内容如下:(NDK_HOME路径根据自己实际情况修改)

#!/bin/bash
NDK_HOME=/home/lch/Desktop/android-ndk-r9d
export NDK=$NDK_HOME
export PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt
export PLATFORM=$NDK/platforms/android-19/arch-arm 
export PREFIX=./androidx264


./configure --prefix=$PREFIX \
--enable-static \
--enable-pic \
--disable-asm \
--disable-cli \
--host=arm-linux \
--cross-prefix=$PREBUILT/linux-x86/bin/arm-linux-androideabi- \
--sysroot=$PLATFORM

2,修改x264的config.h,,找到这句并修改为#define HAVE_LOG2F 0


3,运行脚本。

4,make

5,make install,即可在prefix目录下得到相关库。


三,libmp3lame的编译。

1,比较简单,直接使用Android.mk文件,内容如下(DIR是libmp3lame的路径需根据自己实际情况修改):

LOCAL_PATH := $(call my-dir)
DIR:=libmp3lame
 
include $(CLEAR_VARS)


LOCAL_MODULE     := libmp3lame
LOCAL_SRC_FILES := \
${DIR}/bitstream.c \
${DIR}/encoder.c \
${DIR}/fft.c \
${DIR}/gain_analysis.c \
${DIR}/id3tag.c \
${DIR}/lame.c \
${DIR}/mpglib_interface.c \
${DIR}/newmdct.c \
${DIR}/presets.c \
${DIR}/psymodel.c \
${DIR}/quantize.c \
${DIR}/quantize_pvt.c \
${DIR}/reservoir.c \
${DIR}/set_get.c \
${DIR}/tables.c \
${DIR}/takehiro.c \
${DIR}/util.c \
${DIR}/vbrquantize.c \
${DIR}/VbrTag.c \
${DIR}/version.c


LOCAL_LDLIBS := -llog


include $(BUILD_STATIC_LIBRARY)

,2,执行ndk-build即可得到libmp3lame.a库。


四,对这几个库的使用:

在编写好自己的业务逻辑源码后,可以使用以下类似Android.mk文件对这几个库进行连接。

LOCAL_PATH := $(call my-dir)


include $(CLEAR_VARS)
LOCAL_MODULE  := ffmpeg_api
# These need to be in the right order
FFMPEG_LIBS := $(addprefix ffmpeg/, \
libavdevice/libavdevice.a \
libavformat/libavformat.a \
libavfilter/libavfilter.a \
libavcodec/libavcodec.a \
libswscale/libswscale.a \
libavutil/libavutil.a \
libswresample/libswresample.a \
libpostproc/libpostproc.a )
# ffmpeg uses its own deprecated functions liberally, so turn off that annoying noise
LOCAL_CFLAGS += -g -Iffmpeg -Wno-deprecated-declarations 
LOCAL_LDLIBS += -llog -lz
LOCAL_LDFLAGS += $(FFMPEG_LIBS) libmp3lame/libmp3lame.a x264/libx264.a
LOCAL_SRC_FILES := ffmpeg/ffmpeg.c ffmpeg/ffmpeg_api.c  ffmpeg/cmdutils.c  ffmpeg/ffmpeg_opt.c ffmpeg/ffmpeg_filter.c
include $(BUILD_SHARED_LIBRARY)








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值