如何将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

相关推荐
Doro再努力1 小时前
Vim 快速上手实操手册:从入门到生产环境实战
linux·编辑器·vim
wypywyp1 小时前
8. ubuntu 虚拟机 linux 服务器 TCP/IP 概念辨析
linux·服务器·ubuntu
Doro再努力1 小时前
【Linux操作系统10】Makefile深度解析:从依赖推导到有效编译
android·linux·运维·服务器·编辑器·vim
senijusene1 小时前
Linux软件编程:IO编程,标准IO(1)
linux·运维·服务器
忧郁的橙子.2 小时前
02-本地部署Ollama、Python
linux·运维·服务器
醇氧2 小时前
【linux】查看发行版信息
linux·运维·服务器
No8g攻城狮2 小时前
【Linux】Windows11 安装 WSL2 并运行 Ubuntu 22.04 详细操作步骤
linux·运维·ubuntu
XiaoFan0123 小时前
免密批量抓取日志并集中输出
java·linux·服务器
souyuanzhanvip3 小时前
ServerBox v1.0.1316 跨平台 Linux 服务器管理工具
linux·运维·服务器
HalvmånEver4 小时前
Linux:线程互斥
java·linux·运维