logo
0
0
WeChat Login

FFmpeg Rockchip 静态编译项目

本项目提供 FFmpeg Rockchip 版本的一键静态编译脚本,支持完全静态链接,无需第三方库依赖。

快速开始

一键编译

chmod +x build-ffmpeg-rockchip-static.sh ./build-ffmpeg-rockchip-static.sh

编译内容

脚本会自动按顺序编译以下组件:

  1. libdrm - Direct Rendering Manager 库
  2. Rockchip MPP - 媒体处理平台(硬件编解码)
  3. Rockchip RGA - 2D 图形加速(硬件滤镜)
  4. x264 - H.264 编码器
  5. x265 - HEVC 编码器
  6. libvpx - VP8/VP9 编解码器
  7. opus - Opus 音频编解码器
  8. lame - MP3 编码器
  9. fdk-aac - AAC 编码器
  10. FFmpeg - 主程序(包含 Rockchip 硬件加速)

关键特性

自动化修改

  • 自动修改 RGA meson.build 以支持静态库编译
  • 自动创建 MPP pkg-config 文件
  • 自动处理 C++ 静态链接问题

完全静态链接

  • 所有库均编译为静态库
  • 最终二进制文件无需任何第三方库依赖
  • 可直接复制到目标设备运行

Rockchip 硬件加速

  • MPP 硬件解码:H.264, HEVC, VP9, AV1(最高 8K)
  • MPP 硬件编码:H.264, HEVC(最高 8K)
  • RGA 硬件滤镜:缩放、格式转换、裁剪、旋转、叠加

系统要求

硬件

  • Rockchip RK3588/RK3588s 或其他支持 MPP 的 SoC
  • ARM64 架构
  • 至少 4GB RAM

软件

  • Rockchip BSP/vendor 内核 5.10+ 或 6.1+
  • Debian 11+ / Ubuntu 20.04+ 或其他 ARM64 Linux 发行版

构建工具

# Debian/Ubuntu sudo apt-get install git cmake build-essential pkg-config \ meson ninja-build yasm nasm autoconf automake libtool # Fedora/CentOS sudo yum install git cmake gcc gcc-c++ make pkg-config \ meson ninja-build yasm nasm autoconf automake libtool

编译结果

编译完成后,产物位于:

  • 可执行文件: ffmpeg_build/install/bin/ffmpeg
  • 使用说明: ffmpeg_build/README.md
  • 编译日志: ffmpeg_build/logs/

使用示例

硬件解码 + 硬件编码

ffmpeg_build/install/bin/ffmpeg -c:v h264_rkmpp -i input.mp4 \ -c:v h264_rkmpp -c:a copy output.mp4

使用 RGA 滤镜缩放

ffmpeg_build/install/bin/ffmpeg -c:v h264_rkmpp -i input.mp4 \ -vf scale_rkrga=1280:720 -c:v h264_rkmpp output.mp4

硬件转码为 HEVC

ffmpeg_build/install/bin/ffmpeg -c:v h264_rkmpp -i input.mp4 \ -c:v hevc_rkmpp -b:v 2M -c:a copy output.mp4

视频叠加(使用 RGA)

ffmpeg_build/install/bin/ffmpeg -c:v h264_rkmpp -i main.mp4 -i overlay.png \ -filter_complex "[0:v][1:v]overlay_rkrga=x=10:y=10" \ -c:v h264_rkmpp output.mp4

设备权限

确保运行用户有权限访问硬件设备:

# 添加用户到 video 和 render 组 sudo usermod -aG video,render $USER # 或手动设置设备权限 sudo chmod 666 /dev/mpp_service sudo chmod 666 /dev/rga sudo chmod 666 /dev/dri/*

验证编译结果

检查版本

ffmpeg_build/install/bin/ffmpeg -version

检查硬件支持

# 检查 MPP 解码器 ffmpeg_build/install/bin/ffmpeg -decoders | grep rkmpp # 检查 MPP 编码器 ffmpeg_build/install/bin/ffmpeg -encoders | grep rkmpp # 检查 RGA 滤镜 ffmpeg_build/install/bin/ffmpeg -filters | grep rkrga

检查静态链接

ldd ffmpeg_build/install/bin/ffmpeg

应输出 not a dynamic executable 或只依赖系统必需库。

故障排除

问题:编译时 pkg-config 找不到库

原因:环境变量未正确设置或 .pc 文件丢失

解决方案

# 检查 PKG_CONFIG_PATH echo $PKG_CONFIG_PATH # 应包含: /workspace/ffmpeg_build/install/lib/pkgconfig # 检查 .pc 文件 ls -l /workspace/ffmpeg_build/install/lib/pkgconfig/

问题:x265 C++ 链接错误

原因:C++ 库未正确链接

解决方案:脚本已自动处理,确认 FFmpeg configure 的 --extra-libs 包含 -lstdc++ -ldl

问题:RGA 只编译动态库

原因:RGA 的 meson.build 硬编码 shared_library()

解决方案:脚本已自动修改,使用 sed -i 's/shared_library(/library(/' rkrga/meson.build

问题:找不到 MPP 设备

症状

[rkmpp] Failed to open /dev/mpp_service: No such file or directory

解决方案

  1. 确认使用 Rockchip BSP 内核
  2. 检查内核模块:lsmod | grep mpp
  3. 加载模块:sudo modprobe rockchip_mpp
  4. 检查设备权限:ls -l /dev/mpp_service

项目文档

  • 完整修改指南 - 详细的技术文档和问题解决方案
  • 编译日志 - 保存在 ffmpeg_build/logs/ 目录

参考资源

许可证

本项目遵循 FFmpeg 相关许可证(GPL/LGPL/nonfree)。

性能优化建议

  1. 使用异步编码:MPP 编码器支持帧并行处理

    ffmpeg -c:v h264_rkmpp -i input.mp4 -c:v h264_rkmpp -async_depth 3 output.mp4
  2. 使用 AFBC 格式:解码和编码之间保持 AFBC 格式实现零拷贝

    ffmpeg -c:v hevc_rkmpp -afbc rga -i input.mp4 -c:v h264_rkmpp output.mp4
  3. 合理设置码率

    分辨率H.264 码率HEVC 码率
    720p2-4 Mbps1-2 Mbps
    1080p4-8 Mbps2-4 Mbps
    4K15-25 Mbps8-15 Mbps
    8K50-100 Mbps30-60 Mbps

技术支持

遇到问题时:

  1. 查看编译日志:ffmpeg_build/logs/
  2. 检查系统日志:dmesg | grep -E "mpp|rga"
  3. 参考详细文档:docs/ffmpeg-rockchip-static-build-guide.md
  4. 提交 Issue 到 FFmpeg Rockchip

编译时间:首次完整编译约需 30-60 分钟(取决于 CPU 性能)

磁盘空间:编译过程需要约 5-8 GB 磁盘空间

最终大小:静态链接的 FFmpeg 约 80-120 MB

About

No description, topics, or website provided.
Language
C44.7%
C++24%
Assembly13.1%
Makefile6.5%
Others11.7%