如何将x264 x265的动态库编译入Linux系统中的FFmpeg源码 - x265库编译

0 前言

在Linux操作系统中实现x264库编译、x265库编译,并将他们编译入FFmpeg中。作为一个工作记录,方便后面操作。

Ubuntu 系统编译 x265 库完整步骤

x265 是 H.265/HEVC 视频编码标准的开源实现,编译流程与 x264 类似但有专属依赖和配置,以下是分步详细操作:

一、安装编译依赖工具

首先安装 x265 编译所需的基础工具链和依赖库,打开终端执行:

bash 复制代码
# 1. 更新软件源索引(确保获取最新依赖版本)
sudo apt update

# 2. 安装核心编译工具及专属依赖
sudo apt install -y build-essential git cmake mercurial libnuma-dev

依赖说明:

  • build-essential/git:与 x264 编译一致,提供 gcc/g++/make 工具链和源码克隆能力
  • cmake:x265 采用 CMake 构建系统(而非 x264 的 configure 脚本),是核心构建工具
  • mercurial(hg):x265 官方源码托管在 Mercurial 仓库,需此工具克隆源码
  • libnuma-dev:NUMA 架构优化依赖,提升多核心 CPU 下的编码性能,可选但推荐安装

二、获取 x265 源码

x265 官方源码托管在 MulticoreWare 仓库,https://www.videolan.org/developers/x265.html

下载稳定版源码包(适合生产环境)

若偏好稳定版本,可从官方仓库下载指定版本压缩包:

bash 复制代码
git clone https://bitbucket.org/multicoreware/x265_git.git

# 进入解压后的源码目录
cd x265_git

#切换一个稳定分支,如 3.5
git checkout 3.5

三、创建编译目录(CMake 规范构建方式)

x265 推荐使用out-of-source 构建(源码目录与编译目录分离),避免编译文件污染源码,操作如下:

bash 复制代码
# 在源码根目录下创建 build 目录(用于存放编译配置和生成文件),进入 build 目录
mkdir -p source/build && cd source/build

四、CMake 配置 x265 编译参数(核心步骤)

使用 cmake 命令配置编译选项,提供两种常用配置方案,可根据需求选择:

方案1:通用编译(生成动态库+静态库,系统全局调用)

适合大多数场景,编译后生成 .so 动态库和 .a 静态库,安装到系统默认路径 /usr/local/

bash 复制代码
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DENABLE_SHARED=ON \
-DENABLE_STATIC=ON \
-DCMAKE_INSTALL_PREFIX=/usr/local \
..

或者将生成文件放在./out目录中

bash 复制代码
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DENABLE_SHARED=ON \
-DENABLE_STATIC=ON \
-DCMAKE_INSTALL_PREFIX=./out \
..

参数说明(关键参数):

  • CMAKE_BUILD_TYPE=Release:编译发布版本(优化性能,无调试信息,推荐生产环境),若需调试可改为 Debug
  • ENABLE_SHARED=ON:启用动态库(.so)编译(OFF 则禁用,仅生成静态库)
  • ENABLE_STATIC=ON:启用静态库(.a)编译(OFF 则禁用,仅生成动态库)
  • CMAKE_INSTALL_PREFIX=/usr/local:指定安装路径(可自定义,如 ~/local/x265
  • ..:指定 CMake 查找源码配置文件(CMakeLists.txt)的路径(即上一级源码根目录)

方案2:高性能编译(CPU 优化+功能增强,推荐生产环境)

添加额外优化参数,充分利用硬件性能并启用更多功能:

bash 复制代码
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DENABLE_SHARED=ON \
-DENABLE_STATIC=ON \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DENABLE_PIC=ON \
-DENABLE_NUMA=ON \
-DCPU_TARGET=native \
..

或者将生成文件放在./out目录中

bash 复制代码
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DENABLE_SHARED=ON \
-DENABLE_STATIC=ON \
-DCMAKE_INSTALL_PREFIX=./out \
-DENABLE_PIC=ON \
-DENABLE_NUMA=ON \
-DCPU_TARGET=native \
..

额外参数说明:

  • ENABLE_PIC=ON:生成位置无关代码,便于将 x265 链接到其他动态库中(如 ffmpeg)
  • ENABLE_NUMA=ON:启用 NUMA 架构优化,提升多核心 CPU 编码效率(需提前安装 libnuma-dev)
  • CPU_TARGET=native:自动检测本地 CPU 型号,启用针对性指令集优化(仅当前机器使用时推荐)

配置成功标识

终端输出无报错,最后显示 -- Configuring done-- Generating done,说明 CMake 配置成功,build 目录下会生成 Makefile 等编译文件。

五、编译 x265 源码

使用 make 命令编译,通过 -j 参数指定多线程数(提升编译速度,建议设为 CPU 核心数):

bash 复制代码
# 多线程编译(推荐,自动获取 CPU 核心数,高效快捷)
make -j$(nproc)

编译过程中终端输出编译日志,无 error 提示即编译成功,build 目录下会生成对应的库文件(.so 动态库和 .a 静态库)。

六、安装 x265 库

编译完成后,将库文件、头文件等安装到 CMake 配置时指定的 CMAKE_INSTALL_PREFIX 路径下,需使用 sudo 提升权限(若安装到用户目录可无需 sudo):

bash 复制代码
sudo make install

安装成功后,文件默认部署路径:

  • 头文件:/usr/local/include/x265.h(核心头文件)、/usr/local/include/x265_config.h
  • 库文件:/usr/local/lib/libx265.so(动态库)、/usr/local/lib/libx265.a(静态库)
  • 配置文件:/usr/local/lib/pkgconfig/x265.pc
  • 工具程序:/usr/local/bin/x265(命令行编码工具)

七、配置动态库链接路径(解决运行时库找不到问题)

与 x264 类似,系统默认可能无法识别 x265 动态库路径,需手动配置:

bash 复制代码
# 1. 将 x265 库路径写入系统动态库配置文件
echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/x265.conf

# 2. 更新动态库缓存,使配置立即生效
sudo ldconfig

八、验证 x265 库安装成功

提供两种验证方式,确保 x265 库可正常使用:

方式1:查看 x265 版本(简单直观)

bash 复制代码
# 查看 x265 命令行工具及库版本
x265 --version

若终端输出 x265 的版本信息、编译参数、支持的功能(如 CPU 指令集、编码配置),说明安装成功。

方式2:通过 pkg-config 验证库配置(用于后续项目链接)

bash 复制代码
# 查看 x265 库的编译链接参数(头文件路径+库文件路径)
pkg-config --libs --cflags x265

若终端输出 -I/usr/local/include(头文件路径)和 -L/usr/local/lib -lx265(库文件路径及链接标识),说明库配置正常,可直接用于 ffmpeg 等其他项目的编译链接。

补充说明

  1. 卸载 x265 库 :进入 build 目录执行 sudo make uninstall 即可彻底卸载

  2. 禁用特定功能 :若编译时需关闭优化或功能,可在 CMake 配置时添加参数(如 -DENABLE_ASM=OFF 禁用汇编优化、-DENABLE_LIBNUMA=OFF 禁用 NUMA 支持)

  3. 自定义安装路径 :若指定非默认路径(如 ~/local/x265),需添加环境变量配置:

    bash 复制代码
    # 临时生效(当前终端)
    export PKG_CONFIG_PATH=~/local/x265/lib/pkgconfig:$PKG_CONFIG_PATH
    
    # 永久生效(重启终端后仍有效)
    echo "export PKG_CONFIG_PATH=~/local/x265/lib/pkgconfig:\$PKG_CONFIG_PATH" >> ~/.bashrc
    source ~/.bashrc
  4. 编译 10bit/12bit 版本 :x265 支持高比特深度编码,如需编译 10bit 版本,可在 CMake 配置时添加 -DHIGH_BIT_DEPTH=ON -DMAIN10=ON(12bit 对应 -DMAIN12=ON

相关推荐
飞Link2 小时前
【Anaconda】Linux(CentOS7)下安装Anaconda教程
linux·运维·python
@时间旅行者@2 小时前
LINUX离线安装postgres,rpm方式安装
linux·运维·服务器·postgresql·离线安装
whlqjn_12112 小时前
Ubuntu 20.04图形界面卸载
linux·运维·ubuntu
可爱又迷人的反派角色“yang”3 小时前
GitLab配置与git集成实践
linux·网络·git·docker·云计算·gitlab
斯普信云原生组3 小时前
Linux 平台 Redis Insight 安装卸载与常见问题
linux·运维·redis
qq_416276423 小时前
linux bashrc写各种离线库路径并验证
linux·运维·服务器
Tipriest_3 小时前
配置用户pip源与查看当前的pip的源的办法
linux·人工智能·python·pip
wdfk_prog3 小时前
[Linux]学习笔记系列 -- [fs]mbcache
linux·笔记·学习
飞Link3 小时前
【Hadoop】Linux(CentOS7)下安装Hadoop集群
大数据·linux·hadoop·分布式