Lxn-Chan!

(~ ̄▽ ̄)→))* ̄▽ ̄*)o

瑞芯微的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

  1. 下载Rockchip官方维护的代码库
    1
    git clone https://github.com/rockchip-linux/mpp.git rockchip-mpp && cd rockchip-mpp/
  2. 配置
    1
    2
    3
    4
    5
    mkdir -p build/
    cd build/
    cmake .. \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr/local
  3. 编译
    1
    make -j$(nproc)
  4. 安装
    1
    2
    make install
    ldconfig
  5. 验证
    1
    pkg-config --modversion rockchip_mpp
    此时应有返回一个版本号,我这里是1.3.10

RGA

  1. 下载RGA源码
    1
    git clone -b jellyfin-rga --depth=1 https://github.com/nyanmisaka/rk-mirrors.git rkrga/ && cd rkrga
  2. 配置
    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
  3. 编译
    1
    2
    ninja -C rkrga_build install
    ldconfig
  4. 验证
    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. 生成配置文件
    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
  2. 编译
    1
    2
    3
    make -j$(nproc)
    make install
    ldconfig

3. 验证

  1. 硬解+硬编:
    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。
  2. 软解(做对比)
    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

 简单说两句



联系站长 | 服务状态 | 友情链接

备案号:辽ICP备19013963号

津公网安备12011602300394号

中国互联网违法和不良信息举报中心

架构版本号:8.2.2 | 本站已全面支持IPv6

正在载入运行数据(1/2)请稍后...
正在载入运行数据(2/2)请稍后...

O to die advancing on!

Copyright 2024 LingXuanNing, All rights reserved.