一、背景 介绍1.1 x265简介x265是由MulticoreWare开发的开源HEVC/H.265视频编码器采用先进的并行编码架构在同等画质下相比H.264可节省50%码率。广泛应用于4K/8K视频制作、流媒体传输等场景。转载自猫哥的博客https://blog.csdn.net/qq8864移植效果验证1.2 移植信息表关键信息技术参数工具名称x265 HEVC编码器开源协议GPL-2.0源码版本4.1.0环境平台Ubuntu 24.04(x86_64)目标平台OpenHarmony PC (aarch64)核心依赖CMake 3.24官网地址http://x265.org源码仓库https://github.com/videolan/x265源码包下载地址https://bitbucket.org/multicoreware/x265_git/downloads/二、移植环境准备2.0 环境准备Ubuntu 24.04sudoaptupdatesudoaptinstall-ygitcurlcmake ninja-build gcc gmakeautoconf automake libtool yasm nasmsudoaptinstall-ygettext autopointsudoaptinstallpython3 python3-pipsudoupdate-alternatives--install/usr/bin/python python /usr/bin/python312.1下载配置ohos-sdksdk_download_urlhttps://cidownload.openharmony.cn/version/Daily_Version/OpenHarmony_6.1.0.27/20260111_020523/version-Daily_Version-OpenHarmony_6.1.0.27-20260111_020523-ohos-sdk-public.tar.gzcurl-oohos-sdk-public.tar.gz$sdk_download_urlmkdirohos-sdktar-zxfohos-sdk-public.tar.gz-Cohos-sdkcd~/ohos-sdk/linuxunzipnative-linux-x64-6.1.0.27-Beta1.zipunziptoolchains-linux-x64-6.1.0.27-Beta1.zip这段代码的作用是从指定的 URL 下载 SDK 压缩包然后创建一个名为ohos-sdk的目录并将压缩包解压到该目录下。三、移植实现细节3.1 源码获取与配置gitclone https://github.com/videolan/x265-bRelease_4.1cdx265/source# 创建构建目录mkdirbuild_ohoscdbuild_ohos3.2 编译环境脚本exports.shsourceexports.sh使用猫哥提供的通用脚本exports.sh用于一键配置交叉编译环境。更多移植教程参见猫哥个人博客(blog.csdn.net/qq8864)echohello exports,交叉编译环境配置## SDK路径你唯一需要根据实际的改的地方SDK_PATH/root/ohos-sdk/linuxechoSDK_PATH:$SDK_PATHexportOHOS_SDK$SDK_PATHexportHNP_PERFIXexportCOMPILER_TOOLCHAIN${OHOS_SDK}/native/llvm/bin/BUILD_OS$(uname)PYTHON$(python--version)echopython :$PYTHONexportCC${COMPILER_TOOLCHAIN}clangechoCC :${CC}exportCXX${COMPILER_TOOLCHAIN}clangechoCXX :${CXX}exportHOSTCC${CC}echoHOSTCC :${HOSTCC}exportHOSTCXX${CXX}echoHOSTCXX :${HOSTCXX}exportCPP${CXX}-EechoCPP :${CPP}exportAS${COMPILER_TOOLCHAIN}llvm-asechoAS :${AS}exportLD${COMPILER_TOOLCHAIN}ld.lldechoLD :${LD}exportSTRIP${COMPILER_TOOLCHAIN}llvm-stripechoSTRIP :${STRIP}exportRANLIB${COMPILER_TOOLCHAIN}llvm-ranlibechoRANLIB :${RANLIB}exportOBJDUMP${COMPILER_TOOLCHAIN}llvm-objdumpechoOBJDUMP :${OBJDUMP}exportOBJCOPY${COMPILER_TOOLCHAIN}llvm-objcopyechoOBJCOPY :${OBJCOPY}exportNM${COMPILER_TOOLCHAIN}llvm-nmechoNM :${NM}exportAR${COMPILER_TOOLCHAIN}llvm-arechoAR :${AR}exportSYSROOT${OHOS_SDK}/native/sysrootexportPKG_CONFIG_SYSROOT_DIR${SYSROOT}/usr/lib/aarch64-linux-ohosexportPKG_CONFIG_PATH${PKG_CONFIG_SYSROOT_DIR}exportPKG_CONFIG_EXECUTABLE${PKG_CONFIG_SYSROOT_DIR}exportHNP_TOOL${OHOS_SDK}/toolchains/hnpcliexportCMAKE${OHOS_SDK}/native/build-tools/cmake/bin/cmakeexportTOOLCHAIN_FILE${OHOS_SDK}/native/build/cmake/ohos.toolchain.cmakeexportWORK_ROOT${PWD}exportARCHIVE_PATH${WORK_ROOT}/outputexportCOMM_DEP_PATH${WORK_ROOT}/deps_installexportHNP_PUBLIC_PATH${HNP_PERFIX}/data/service/hnp/exportMAKE_QUITE_PARAM -s exportCONFIGURE_QUITE_PARAM --quiet exportTARGET_PLATFORMaarch64-linux-ohosexportTARGETaarch64-linux-ohosexportCFLAGS-fPIC -D__MUSL__1 -D__OHOS__ -fstack-protector-strong --target${TARGET_PLATFORM}--ld-path${LD}--sysroot${SYSROOT}-stdliblibc exportCXXFLAGS${CFLAGS}exportLD_LIBRARY_PATH${SYSROOT}/usr/lib:${LD_LIBRARY_PATH}exportLDFLAGS--ld-path${LD}-Wc,--target${TARGET_PLATFORM}--sysroot${SYSROOT}-fuse-ldlld exportHOST_TYPE--hostaarch64-linux --buildaarch64-linux#export NCURSES_INSTALL_HNP_PATH${HNP_PUBLIC_PATH}/ncurses.org/ncurses_v6.4mkdir-p${HNP_PUBLIC_PATH}mkdir-p${ARCHIVE_PATH}chmod777-R${HNP_PUBLIC_PATH}mkdir-pcodeechoLDFLAGS:${LDFLAGS}#export PKG_CONFIG_PATH${CUSTOM_PREFIX}/lib/pkgconfig:$PKG_CONFIG_PATH3.3 构建脚本build_ohos.sh放置在新建的build_ohos目录下。exportX265_INSTALL_HNP_PATH${HNP_PUBLIC_PATH}/x265.org/x265_4.1.0makeclean# 编译安装x265mkdir-p${X265_INSTALL_HNP_PATH}#!/bin/bash# 编译安装x265${CMAKE}../source\-DCROSS_COMPILE_ARM1-DCMAKE_TOOLCHAIN_FILE${TOOLCHAIN_FILE}\-DCMAKE_BUILD_TYPERelease\-DBUILD_SHARED_LIBSON\-DCMAKE_INSTALL_PREFIX${X265_INSTALL_HNP_PATH}makeVERBOSE1-j$(nproc)makeinstall# 生成鸿蒙HNP软件包cphnp.json${X265_INSTALL_HNP_PATH}/pushd${X265_INSTALL_HNP_PATH}/../${HNP_TOOL}pack-i${X265_INSTALL_HNP_PATH}-o${ARCHIVE_PATH}/tar-zvcf${ARCHIVE_PATH}/ohos_x265_4.1.0.tar.gz x265_4.1.0/popdhnp.json文件内容如下{type:hnp-config,name:x265,version:4.1.0,install:{}}3.4 编译指令详解参数作用-DENABLE_SHAREDOFF强制静态编译避免动态库依赖-DCMAKE_SYSROOT指定鸿蒙系统根目录-DENABLE_CLION生成命令行可执行文件-G Unix Makefiles指定生成Makefile构建系统四、鸿蒙PC端部署验证4.1 文件传输与安装# 将压缩包复制到鸿蒙PCscpx265_ohos.tar.gz harmony_pc:/home/pkg# 在鸿蒙终端执行tar-zxvfx265_ohos.tar.gz-C/usr/localexportPATH$PATH:/usr/local/x265_4.1.0/bin4.2 功能测试案例# 查看版本信息x265--version# 输出应包含x265 4.11-6b9322b5d:[Linux][clang 16.0.0][64 bit]# 测试编码YUV→HEVCx265--inputres1920x1080 --input-res 1920x1080--fps30--outputtest.2654.3 鸿蒙PC模拟器中验证五、常见问题解决FAQ很顺利暂无遇到任何问题。六、性能优化建议SIMD指令优化在CMake中启用-DENABLE_ASSEMBLYON多线程调优通过--pools参数指定线程池配置码率控制策略使用--bitrate或--crf进行动态码率适配通过本指南开发者可快速将专业级视频编码工具集成到鸿蒙生态中。更多移植案例请访问猫哥的博客欢迎加入鸿蒙开发者社区共同打造开发者工具生态 鸿蒙开发者社区