libx265的Android编译

x265目前在Android手机上如果用来编码的话,编译速度很慢,而且极度消耗cpu,目前在移动端的实用性不大。

首先需要使用ndk做一个交叉编译工具链出来:

进入ndk的/build/tools/目录,然后使用命令:

./make-standalone-toolchain.sh --install-dir=/home/zxb/android-16-toolchain --ndk-dir=/home/zxb/android-ndk-r9d/ --arch=arm --platform=android-16 --system=linux-x86_64

最好使用ndk-9。

然后进入x265的build/arm-linux下,修改crosscompile.cmake的内容为下面这样:

set(CROSS_COMPILE_ARM 1)
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR armv6l)

# specify the cross compiler
set(CMAKE_C_COMPILER arm-linux-androideabi-gcc)
set(CMAKE_CXX_COMPILER arm-linux-androideabi-g++)

# specify the target environment
SET(CMAKE_FIND_ROOT_PATH  /home/zxb/android-16-toolchain/)
set(CMAKE_SYSROOT /home/zxb/android-16-toolchain/sysroot)

修改x265/source/CMakeList.txt文件:

if(X265_LATEST_TAG)
    # convert lists of link libraries into -lstdc++ -lm etc..
    foreach(LIB ${CMAKE_CXX_IMPLICIT_LINK_LIBRARIES} ${PLATFORM_LIBS})
        if(IS_ABSOLUTE ${LIB} AND EXISTS ${LIB})
            list(APPEND PLIBLIST "${LIB}")
        else()
            list(APPEND PLIBLIST "-l${LIB}")
        endif()
    endforeach()
    if(PLIBLIST)
        # blacklist of libraries that should not be in Libs.private
        list(REMOVE_ITEM PLIBLIST "-lc" "-lmingwex" "-lmingwthrd"
            "-lmingw32" "-lmoldname" "-lmsvcrt" "-ladvapi32" "-lshell32"
            "-luser32" "-lkernel32")
        string(REPLACE ";" " " PRIVATE_LIBS "${PLIBLIST}")
    else()
        set(PRIVATE_LIBS "")
    endif(PLIBLIST)

    # Produce a pkg-config file
    configure_file("x265.pc.in" "x265.pc" @ONLY)
    install(FILES       "${CMAKE_CURRENT_BINARY_DIR}/x265.pc"
            DESTINATION "${LIB_INSTALL_DIR}/pkgconfig")
endif()

去掉lpthread.

if(UNIX)
#    list(APPEND PLATFORM_LIBS pthread)
# 注释掉list这一行

然后执行make-Makefiles.bash这个文件.

执行完命令后修改CMakeFiles/x265-shared.dir/link.txt文件下将命令中间相关改成这样:-fPIC -O3 -DNDEBUG -Wl,-Bsymbolic,-znoexecstack -shared -o libx265.so

修改文件CMakeFiles/cli.dir/link.txt文件,将libx265.so.151去掉(.版本号)变成libx265.so.

修改文件./CMakeFiles/x265-shared.dir/build.make做如下修改:

首先去年所有libx265.so.151后面的版本号,改成libx265.so.

然后做如下修改

libx265.so: x265.def
libx265.so: CMakeFiles/x265-shared.dir/link.txt
	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/zxb/x265/build/arm-linux/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Linking CXX shared library libx265.so"
	$(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/x265-shared.dir/link.txt --verbose=$(VERBOSE)
	$(CMAKE_COMMAND) -E cmake_symlink_library libx265.so libx265.so libx265.so.151//修改点

libx265.so.151: libx265.so//修改点
	@$(CMAKE_COMMAND) -E touch_nocreate libx265.so.151//修改点

修改文件source/common/cpu.cpp下关于arm的cpu_detect,修改如下:

#elif X265_ARCH_ARM

extern "C" {
void PFX(cpu_neon_test)(void);
int PFX(cpu_fast_neon_mrc_test)(void);
}

uint32_t cpu_detect(void)
{
    return 0;
}

 最后执行make命令。就可以了。这个是使用cmake编译出的x265动态库。目前x265的静态库好像不能直接供ffmpeg使用。编译通不过。

可直接下载ffmpeg+x264+265资源地址:

ffmpeg+x264+265


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值