目录
0、前言
1、开发环境
2、安装rkmpp
3、安装x264
4、安装libdrm
5、安装ffmpeg
6、相关报错
1)libdrm编译过程中报错
參考:
0、前言
- 在使用opencv的VideoCapture获取网络摄像头视频时,一直在open时返回false。原因在与opencv编译过程中没有ffmpeg。
- rk3588使用ffmpeg实现硬件解码
1、开发环境
开发环境 | 软件版本/配置 |
---|---|
开发板 | firefly rk3588J |
操作系统 | openEuler 20.03 LTS |
python版本 | 3.9.18 |
2、安装rkmpp
git clone https://github.com/rockchip-linux/mpp
cd mpp/build/linux/aarch64
./make-Makefiles.bash
make -j8
sudo make install
RK3588编译RKMPP库+编解码测试_linux_iTOYUNA-华为云开发者联盟
3、安装x264
git clone https://code.videolan.org/videolan/x264.git
cd x264
./configure --prefix=/usr/local/my/x264 --disable-opencl --enable-static --enable-shared
make -j8
sudo make install
4、安装libdrm
wget https://dri.freedesktop.org/libdrm/libdrm-2.4.89.tar.bz2
tar -jxvf libdrm-2.4.89.tar.bz2
cd libdrm-2.4.89
./configure --prefix=/usr/local/my/libdrm --host=aarch64-linux-gnu
make -j8
sudo make install
解压
–prefix 指定安装目录
–host 当前编译工具链的前缀 ll /usr/bin/gcc*查看
5、安装ffmpeg
git clone https://git.ffmpeg.org/ffmpeg.git
cd ffmpeg
./configure --prefix=/usr/local/my/ffmpeg --enable-version3 --enable-libdrm --enable-rkmpp --enable-libx264 --enable-nonfree --enable-gpl --enable-shared
–enable-gpl 允许使用GPL代码,生成的库和二进制文件将在GPL下[no]
–enable-version3 升级(L)GPL到版本3 [no]
–enable-nonfree 允许使用非自由代码,生成的库 和二进制文件将是不可分发的[不]
--enable-shared 一定要加上,否则opencv编译安装时报错
设置PKG_CONFIG_PATH
方法一:
sudo find / -name pkgconfig
找到需要的x264 libdrm的pkgconfig文件夹,rockchip_mpp.pc 被安装在了/usr/local/lib/pkgconfig这
export PKG_CONFIG_PATH=/usr/local/my/x264/lib/pkgconfig:/usr/local/my/libdrm/lib/pkgconfig:/usr/local/lib/pkgconfig
查看一下
echo $PKG_CONFIG_PATH
/usr/local/my/x264/lib/pkgconfig:/usr/local/my/libdrm/lib/pkgconfig:/usr/local/lib/pkgconfig
方法二(建议):
sudo vim /etc/ld.so.conf
添加如下内容
include /etc/ld.so.conf.d/*.conf
#复制下面内容
/usr/local/lib #librockchip_mpp.so
/usr/local/my/x264/lib #lib264.so/usr/local/my/libdrm/lib
sudo ldconfig
sudo vim ~/.bashrc
export PATH=$PATH:/usr/local/my/ffmpeg/bin
source ~/.bashrc
查看一下系统PATH,可以看到已经将ffmpeg添加好了
重新编译
./configure --prefix=/usr/local/my/ffmpeg --enable-version3 --enable-libdrm --enable-rkmpp --enable-libx264 --enable-nonfree --enable-gpl --enable-shared
make -j8
sudo make install
执行ffmpeg
查看支持的编解码器
ffmpeg configure -codecs | grep h264
6、相关报错
1)libdrm编译过程中报错
/ffmpeg/libdrm-2.4.89/nouveau/privateh:13: multiple definit ion of "nouveau debug':; .libs/nouveau.o
collect2: error: ld returned 1 exit status
make[2]: ***[Makefile:654: libdrm_nouveau.la] Error 1
make[1]: ***[Makefile:821: all-recursive] Error 1
原因
新版gcc不支持缺省extern。
解决方案:
修改nouveau/private.h中的drm_private uint32_t nouveau_debug;如下:
-drm_private uint32_t nouveau_debug;
+drm_private extern uint32_t nouveau_debug;
2)ffmpeg: error while loading shared libraries: libavdevice.so.60: cannot open shared object file: No such file or directory
确定/etc/ld.so.conf的配置生效
sudo vim /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf
#复制下面内容
/usr/local/lib #librockchip_mpp.so
/usr/local/my/x264/lib #lib264.so/usr/local/my/libdrm/lib
执行sudo ldconfig生效
报错:
创建该文件夹
參考:
rk3588 ffmpeg使用硬件解码-CSDN博客
rk板子linux系统安装rga,drm,mpp_rkdrm 安装-CSDN博客