RK3588交叉编译ffmpeg+x264

iTOP-RK3588提供的镜像中,自带ffmpeg默认是不支持 Rockchip VPU 硬件加速,需要用户自己去编译,注意不要用官方提供的虚拟机镜像,直接wsl安装对应版本Ubuntu,虚拟机镜像是编译不过的。
文章尾部提供已交叉编译完成的ffmpeg,你也可以按照流程自己编译
阶段零:准备 WSL 和 Ubuntu 20.04 环境
【在 Windows PowerShell 或 CMD 中执行】
第1步:安装 Ubuntu 20.04 for WSL
wsl --install -d Ubuntu-20.04
说明:
- 执行后等待安装完成。
- 在弹出的新窗口中,按提示创建您的【新用户名】和【新密码】。
阶段一:配置 Ubuntu 交叉编译基础环境
【在您的 Ubuntu 20.04 for WSL 终端中执行】
第2步:更新系统
sudo apt update && sudo apt upgrade -y
第3步:安装核心编译工具
sudo apt install build-essential git cmake yasm automake autoconf libtool pkg-config wget unzip```
第4步:安装交叉编译工具链
sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
第5步:启用 arm64 架构支持
sudo dpkg --add-architecture arm64
第6步:备份并修改软件源列表
6.1 备份原始文件:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
6.2 打开编辑器:
sudo nano /etc/apt/sources.list
在打开的 nano 编辑器中,删除所有原有内容,然后完整复制并粘贴以下全部内容:
# 本机 amd64 架构的源
deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse
deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse
deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
deb [arch=amd64] http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
# 交叉编译 arm64 架构的源
deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ focal main restricted universe multiverse
deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ focal-updates main restricted universe multiverse
deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ focal-backports main restricted universe multiverse
deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ focal-security main restricted universe multiverse
修改完成后,按 Ctrl + O 保存,再按 Ctrl + X 退出。
第7步:再次刷新软件源列表
sudo apt update
第8步:安装交叉编译所需的 libdrm 开发包
sudo apt install libdrm-dev:arm64
第9步:设置环境变量
- 重要提示: 每次重开新终端进行编译,都需要重新执行这一步。
export CC=aarch64-linux-gnu-gcc
export CXX=aarch64-linux-gnu-g++
export AR=aarch64-linux-gnu-ar
export STRIP=aarch64-linux-gnu-strip
export RANLIB=aarch64-linux-gnu-ranlib
第10步:创建并进入总工作目录
export WORKSPACE=~/rk3588_ffmpeg_wsl
mkdir -p $WORKSPACE
cd $WORKSPACE
阶段二:交叉编译所有依赖库
第一部分:编译 Rockchip MPP
第11步:下载 MPP 源码
git clone https://github.com/rockchip-linux/mpp.git
第12步:进入 mpp 目录并创建 build 目录
cd mpp
mkdir build
第13步:进入 build 目录
cd build
第14步:执行 cmake 配置
cmake .. \
-DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc \
-DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ \
-DCMAKE_INSTALL_PREFIX=$WORKSPACE/install \
-DBUILD_TEST=OFF
第15步:执行编译
make -j$(nproc)
第16步:执行安装
make install
第二部分:编译 libx264
第17步:回到总工作目录
cd $WORKSPACE
第18步:下载 x264 源码
git clone https://code.videolan.org/videolan/x264.git
第19步:进入 x264 目录
cd x264
第20步:执行 ./configure 配置
./configure \
--host=aarch64-linux-gnu \
--cross-prefix=aarch64-linux-gnu- \
--prefix=$WORKSPACE/install \
--enable-static \
--disable-cli
第21步:执行编译
make -j$(nproc)
第22步:执行安装
make install
阶段三:交叉编译 FFmpeg 主体 (最终环节)
第23步:创建pkg-config“万能钥匙”
23.1 回到主目录并创建新文件夹:
cd ~
mkdir -p ~/bin_wrappers
23.2 创建脚本文件 (这是一个整体,请一起复制):
cat > ~/bin_wrappers/aarch64-linux-gnu-pkg-config <<EOF
#!/bin/sh
export PKG_CONFIG_PATH="$HOME/rk3588_ffmpeg_wsl/install/lib/pkgconfig:/usr/lib/aarch64-linux-gnu/pkgconfig"
exec /usr/bin/pkg-config "\$@"
EOF
23.3 赋予执行权限:
chmod +x ~/bin_wrappers/aarch64-linux-gnu-pkg-config
23.4 将“万能钥匙”目录加入 PATH:
export PATH=~/bin_wrappers:$PATH
第24步:回到总工作目录
cd $WORKSPACE
第25步:下载 ffmpeg-rockchip 源码 (推荐使用镜像)
git clone https://kgithub.com/nyanmisaka/ffmpeg-rockchip.git
第26步:进入 ffmpeg-rockchip 目录
cd ffmpeg-rockchip
第27步:执行【最终修正版】的 ./configure 命令
./configure \
--prefix=$WORKSPACE/ffmpeg_build \
--arch=aarch64 \
--target-os=linux \
--cc=aarch64-linux-gnu-gcc \
--cross-prefix=aarch64-linux-gnu- \
--enable-cross-compile \
--enable-shared \
--disable-static \
--enable-gpl \
--enable-version3 \
--disable-doc \
\
--enable-rkmpp \
--enable-libdrm \
--enable-libx264 \
\
--extra-cflags="-I$WORKSPACE/install/include" \
--extra-ldflags="-L$WORKSPACE/install/lib" \
--disable-x86asm
第28步:执行编译 (最耗时的一步)
make -j$(nproc)
第29步:执行安装
make install
阶段四:部署到开发板并验证
第30步:在 WSL 中打包
30.1 回到总工作目录:
cd $WORKSPACE
30.2 执行打包命令:
tar -czvf ffmpeg_rk3588.tar.gz ffmpeg_build
第31步:将包从 WSL 复制到 Windows (例如 F 盘)
cp ffmpeg_rk3588.tar.gz /mnt/f/
第32步:将文件上传到开发板
- 使用 MobaXterm 等工具,将 ffmpeg_rk3588.tar.gz 从 Windows 上传到开发板的主目录 (~)。
第33步:在【开发板终端】中解压
cd ~
tar -xzvf ffmpeg_rk3588.tar.gz
第34步:在【开发板终端】中安装到系统
34.1 进入解压后的目录:
cd ffmpeg_build
34.2 复制文件 (这是一个整体,请一起复制):
sudo cp ./bin/ffmpeg /usr/local/bin/
sudo cp ./bin/ffprobe /usr/local/bin/
sudo cp -r ./lib/* /usr/local/lib/
第35步:在【开发板终端】中刷新动态库缓存 (必须执行!)
sudo ldconfig
第36步:在【开发板终端】中进行终极验证
36.1 检查版本和配置:
ffmpeg -version
36.2 检查硬件解码器:
ffmpeg -decoders | grep rkmpp
36.3 检查硬件编码器:
ffmpeg -encoders | grep rkmpp
36.4 性能测试 (需准备一个 input.mp4 视频文件):
ffmpeg -c:v h264_rkmpp -i input.mp4 -f null -
在运行时,另开一个终端用 htop 观察 CPU 占用率。


通过网盘分享的文件:ffmpeg_rk3588.tar.gz
链接: https://pan.baidu.com/s/1nYjYRJdtHY21D3up8b_EQw?pwd=sw7s 提取码: sw7s
浙公网安备 33010602011771号