瑞芯微的SoC中也有视频加速模块,但并非Intel/AMD/nVidia平台的VAAPI、QSV、NVENC,而是使用Rockchip MPP(Media Process Platform)。而官方由于多种原因长久以来并未启用MPP,将其合到主线。因此我们在本文中将自行进行编译。
硬件
- SoC:Rockchip RK3568
- RAM:4GB
- 内核:
Linux armbian 6.1.118-panther-bsp61 #1 SMP Wed Jul 15 14:33:52 CST 2026 aarch64 GNU/Linux
安装依赖
开发工具
1 2
| apt install -y build-essential git cmake meson ninja-build pkg-config \ yasm nasm autoconf automake libtool python3 python3-pip
|
FFmpeg依赖
1 2 3 4 5
| apt install -y libdrm-dev libx264-dev libx265-dev libvpx-dev libopus-dev \ libmp3lame-dev libvorbis-dev libass-dev libfreetype-dev libfontconfig1-dev \ libfribidi-dev libxml2-dev libdav1d-dev libaom-dev libwebp-dev libjpeg-dev \ libpng-dev libssl-dev libnuma-dev zlib1g-dev libasound2-dev libv4l-dev \ libsrt-openssl-dev libsoxr-dev libpulse-dev libfdk-aac-dev
|
前置编译
MPP
- 下载Rockchip官方维护的代码库
1
| git clone https://github.com/rockchip-linux/mpp.git rockchip-mpp && cd rockchip-mpp/
|
- 配置
1 2 3 4 5
| mkdir -p build/ cd build/ cmake .. \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr/local
|
- 编译
- 安装
- 验证
1
| pkg-config --modversion rockchip_mpp
|
此时应有返回一个版本号,我这里是1.3.10。
RGA
- 下载RGA源码
1
| git clone -b jellyfin-rga --depth=1 https://github.com/nyanmisaka/rk-mirrors.git rkrga/ && cd rkrga
|
- 配置
1 2 3 4 5 6 7 8
| meson setup rkrga_build . \ --prefix=/usr/local \ --libdir=lib \ --buildtype=release \ --default-library=shared \ -Dcpp_args=-fpermissive \ -Dlibdrm=false \ -Dlibrga_demo=false
|
- 编译
1 2
| ninja -C rkrga_build install ldconfig
|
- 验证
1
| pkg-config --modversion librga
|
此时应有返回一个版本号,我这里是2.1.0。
编译ffmpeg-rk
1. 下载源码
官方的主线 FFmpeg 虽包含部分 MPP 支持,但缺乏高效的零拷贝转码和 RGA 滤镜。推荐使用由社区长期维护的ffmpeg-rockchip分支。
1
| git clone --depth=1 https://github.com/nyanmisaka/ffmpeg-rockchip.git ffmpeg-rockchip/
|
2. 编译
- 生成配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| ./configure \ --prefix=/usr/local \ --enable-gpl \ --enable-version3 \ --enable-nonfree \ --enable-shared \ --enable-static \ --enable-pic \ --enable-runtime-cpudetect \ --enable-pthreads \ --enable-neon \ --enable-libdrm \ --enable-rkmpp \ --enable-rkrga \ --enable-v4l2-m2m \ --enable-libv4l2 \ --enable-alsa \ --enable-libpulse \ --enable-openssl \ --enable-libsrt \ --enable-zlib \ --enable-libxml2 \ --enable-libaom \ --enable-libdav1d \ --enable-libvpx \ --enable-libx264 \ --enable-libx265 \ --enable-libwebp \ --enable-libfdk-aac \ --enable-libmp3lame \ --enable-libopus \ --enable-libvorbis \ --enable-libsoxr \ --enable-libass \ --enable-libfreetype \ --enable-libfontconfig \ --enable-libfribidi \ --enable-libharfbuzz
|
- 编译
1 2 3
| make -j$(nproc) make install ldconfig
|
3. 验证
- 硬解+硬编:
1 2 3
| ffmpeg -hwaccel rkmpp -hide_banner -benchmark -stats -c:v h264_rkmpp \ -i \[SubsPlease\]\ Kore\ Kaite\ Shine\ -\ 02\ \(1080p\)\ \[0F910AE6\].mkv \ -map 0:v:0 -an -sn -dn -c:v h264_rkmpp -b:v 8M out.mp4
|
结果:1
| frame= 6848 fps= 26 q=14.0 size= 290048kB time=00:04:45.57 bitrate=8320.3kbits/s speed=1.08x
|
观察到CPU全程负载小于0.25。 - 软解(做对比)
1 2 3
| ffmpeg -hide_banner -benchmark -stats -c:v h264 \ -i \[SubsPlease\]\ Kore\ Kaite\ Shine\ -\ 02\ \(1080p\)\ \[0F910AE6\].mkv \ -map 0:v:0 -an -sn -dn -c:v h264 -b:v 8M out2.mp4
|
结果:1
| frame= 43 fps=1.7 q=24.0 size= 2304kB time=00:00:01.71 bitrate=11037.6kbits/s speed=0.0676x
|
观察到CPU负载为2.64。
其他
我其实还测试了RK3588的ffmpeg编解码速度,内核用的5.10,其余ffmpeg的配置全部一样:
1
| frame= 3014 fps=313 q=15.0 size= 89600kB time=00:02:05.66 bitrate=5840.9kbits/s speed=13.1x
|