在x265的soure目录下建立Application.mk文件,内容如下:
APP_BUILD_SCRIPT := Android.mk
APP_STL := gnustl_static
APP_ABI :=armeabi
APP_PLATFORM := android-16
再建立Android.mk文件,内容如下:
LOCAL_PATH := $(call my-dir)
#---------- static module ----------#
COMMON_CPP_SRCS := \
common/cpu.cpp \
common/ipfilter.cpp \
common/threadpool.cpp \
common/param.cpp \
common/picyuv.cpp \
common/framedata.cpp \
common/bitstream.cpp \
common/pixel.cpp \
common/predict.cpp \
common/quant.cpp \
common/constants.cpp \
common/md5.cpp \
common/dct.cpp \
common/loopfilter.cpp \
common/primitives.cpp \
common/scalinglist.cpp \
common/piclist.cpp \
common/frame.cpp \
common/slice.cpp \
common/common.cpp \
common/threading.cpp \
common/lowres.cpp \
common/intrapred.cpp \
common/wavefront.cpp \
common/winxp.cpp \
common/shortyuv.cpp \
common/yuv.cpp \
common/deblock.cpp \
common/cudata.cpp \
common/version.cpp \
common/lowpassdct.cpp
COMMON_ARM_SRCS := \
common/arm/asm-primitives.cpp \
common/arm/asm.S \
common/arm/blockcopy8.S \
common/arm/cpu-a.S \
common/arm/dct-a.S \
common/arm/ipfilter8.S \
common/arm/mc-a.S \
common/arm/pixel-util.S \
common/arm/sad-a.S \
common/arm/ssd-a.S
COMMON_X86_SRCS := \
common/x86/asm-primitives.cpp \
common/x86/blockcopy8.asm \
common/x86/const-a.asm \
common/x86/cpu-a.asm \
common/x86/dct8.asm \
common/x86/intrapred16.asm \
common/x86/intrapred8_allangs.asm \
common/x86/intrapred8.asm \
common/x86/ipfilter16.asm \
common/x86/ipfilter8.asm \
common/x86/loopfilter.asm \
common/x86/mc-a2.asm \
common/x86/mc-a.asm \
common/x86/pixel-32.asm \
common/x86/pixel-a.asm \
common/x86/pixeladd8.asm \
common/x86/pixel-util8.asm \
common/x86/sad16-a.asm \
common/x86/sad-a.asm \
common/x86/ssd-a.asm \
common/x86/x86inc.asm \
common/x86/x86util.asm \
common/x86/seaintegral.asm
ENCODER_CPP_SRCS := \
encoder/analysis.cpp \
encoder/api.cpp \
encoder/bitcost.cpp \
encoder/dpb.cpp \
encoder/encoder.cpp \
encoder/entropy.cpp \
encoder/frameencoder.cpp \
encoder/framefilter.cpp \
encoder/level.cpp \
encoder/motion.cpp \
encoder/nal.cpp \
encoder/ratecontrol.cpp \
encoder/reference.cpp \
encoder/sao.cpp \
encoder/search.cpp \
encoder/sei.cpp \
encoder/slicetype.cpp \
encoder/weightPrediction.cpp
INPUT_CPP_SRCS := \
input/input.cpp \
input/y4m.cpp \
input/yuv.cpp
OUTPUT_CPP_SRCS := \
output/reconplay.cpp \
output/raw.cpp \
output/y4m.cpp \
output/yuv.cpp \
output/output.cpp
include $(CLEAR_VARS)
LOCAL_MODULE := common
LOCAL_ARM_MODULE := arm
LOCAL_CFLAGS := -Wall -Wextra -Wshadow -std=gnu++98 -fPIC -Wno-array-bounds -ffast-math -fno-exceptions -fpermissive -frtti -Wno-maybe-uninitialized
LOCAL_CFLAGS += -DEXPORT_C_API=1 -DHAVE_INT_TYPES_H=1 -DHIGH_BIT_DEPTH=0 -DX265_DEPTH=8 -DX265_NS=x265 -D__STDC_LIMIT_MACROS=1 -DHAVE_STRTOK_R
LOCAL_EXPORT_CFLAGS := $(LOCAL_CFLAGS)
LOCAL_SRC_FILES := $(COMMON_CPP_SRCS)
$(info arm = $(TARGET_ARCH_ABI))
ifneq (, $(findstring $(TARGET_ARCH_ABI),armeabi armeabi-v7a))
LOCAL_CFLAGS += -DHAVE_NEON -DX265_ARCH_ARM
LOCAL_SRC_FILES += $(COMMON_ARM_SRCS)
endif
ifeq ($(TARGET_ARCH_ABI),x86)
LOCAL_CFLAGS += -UX86_64 -DX265_ARCH_X86
LOCAL_SRC_FILES += $(COMMON_X86_SRCS)
endif
LOCAL_C_INCLUDES := $(LOCAL_PATH) $(LOCAL_PATH)/common $(LOCAL_PATH)/encoder
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES)
include $(BUILD_STATIC_LIBRARY)
#---------- static module ----------#
include $(CLEAR_VARS)
LOCAL_MODULE := encoder
LOCAL_ARM_MODULE := arm
LOCAL_SRC_FILES := $(ENCODER_CPP_SRCS)
LOCAL_STATIC_LIBRARIES := common
include $(BUILD_STATIC_LIBRARY)
#---------- static module ----------#
include $(CLEAR_VARS)
LOCAL_MODULE := input
LOCAL_ARM_MODULE := arm
LOCAL_SRC_FILES := \
input/input.cpp \
input/y4m.cpp \
input/yuv.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)
LOCAL_STATIC_LIBRARIES := common
include $(BUILD_STATIC_LIBRARY)
#---------- static module ----------#
include $(CLEAR_VARS)
LOCAL_MODULE := output
LOCAL_ARM_MODULE := arm
LOCAL_SRC_FILES := \
output/reconplay.cpp \
output/raw.cpp \
output/y4m.cpp \
output/yuv.cpp \
output/output.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)
LOCAL_STATIC_LIBRARIES := common
include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := x265
LOCAL_ARM_MODULE := arm
LOCAL_WHOLE_STATIC_LIBRARIES := encoder input output
include $(BUILD_SHARED_LIBRARY)
执行ndk-build命令就可以了
可直接下载ffmpeg+x264+265资源地址: