本项目提供 FFmpeg Rockchip 版本的一键静态编译脚本,支持完全静态链接,无需第三方库依赖。
chmod +x build-ffmpeg-rockchip-static.sh
./build-ffmpeg-rockchip-static.sh
脚本会自动按顺序编译以下组件:
✅ 自动化修改
✅ 完全静态链接
✅ Rockchip 硬件加速
# 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/ffmpegffmpeg_build/README.mdffmpeg_build/logs/ffmpeg_build/install/bin/ffmpeg -c:v h264_rkmpp -i input.mp4 \ -c:v h264_rkmpp -c:a copy output.mp4
ffmpeg_build/install/bin/ffmpeg -c:v h264_rkmpp -i input.mp4 \ -vf scale_rkrga=1280:720 -c:v h264_rkmpp output.mp4
ffmpeg_build/install/bin/ffmpeg -c:v h264_rkmpp -i input.mp4 \ -c:v hevc_rkmpp -b:v 2M -c:a copy output.mp4
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 或只依赖系统必需库。
原因:环境变量未正确设置或 .pc 文件丢失
解决方案:
# 检查 PKG_CONFIG_PATH
echo $PKG_CONFIG_PATH
# 应包含: /workspace/ffmpeg_build/install/lib/pkgconfig
# 检查 .pc 文件
ls -l /workspace/ffmpeg_build/install/lib/pkgconfig/
原因:C++ 库未正确链接
解决方案:脚本已自动处理,确认 FFmpeg configure 的 --extra-libs 包含 -lstdc++ -ldl
原因:RGA 的 meson.build 硬编码 shared_library()
解决方案:脚本已自动修改,使用 sed -i 's/shared_library(/library(/' rkrga/meson.build
症状:
[rkmpp] Failed to open /dev/mpp_service: No such file or directory
解决方案:
lsmod | grep mppsudo modprobe rockchip_mppls -l /dev/mpp_serviceffmpeg_build/logs/ 目录本项目遵循 FFmpeg 相关许可证(GPL/LGPL/nonfree)。
使用异步编码:MPP 编码器支持帧并行处理
ffmpeg -c:v h264_rkmpp -i input.mp4 -c:v h264_rkmpp -async_depth 3 output.mp4
使用 AFBC 格式:解码和编码之间保持 AFBC 格式实现零拷贝
ffmpeg -c:v hevc_rkmpp -afbc rga -i input.mp4 -c:v h264_rkmpp output.mp4
合理设置码率:
| 分辨率 | H.264 码率 | HEVC 码率 |
|---|---|---|
| 720p | 2-4 Mbps | 1-2 Mbps |
| 1080p | 4-8 Mbps | 2-4 Mbps |
| 4K | 15-25 Mbps | 8-15 Mbps |
| 8K | 50-100 Mbps | 30-60 Mbps |
遇到问题时:
ffmpeg_build/logs/dmesg | grep -E "mpp|rga"编译时间:首次完整编译约需 30-60 分钟(取决于 CPU 性能)
磁盘空间:编译过程需要约 5-8 GB 磁盘空间
最终大小:静态链接的 FFmpeg 约 80-120 MB