RK3588交叉编译ffmpeg+x264

18b67d1753af42f0a56a3663e69b009e

 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 占用率。

 

1925298d89957db51a5f15f11bec53fa

 

7244a44d88e70541ee41adb9c37589eb

 

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

posted @ 2025-11-17 15:55  雷雨交+  阅读(1)  评论(0)    收藏  举报