QT使用ffmpeg进行编码时,不再像以前一样使用API进行编程,而是采用了外部命令进行执行,虽然使用外部命令进行直播可以做到方便快捷的开发,但是缺点也很明显,很多功能在开发时非常不灵活。
我们先试着把ffmpeg的头文件库先包含进来,然后就发现提示文件不存在,然后我们根据ffmpeg的路径去找一下/usr/include就会发现里面并没有ffmpeg的头文件,那就没办法了,我们自己进行编译一下吧,而且飞凌官方也给我们提供具体的移植过程,OK3588 5.10.66 Forlinx Desktop20.04 移植ffmpeg,不过也可以按照我这里面来进行移植。
mkdir ffmpeg
cd ffmpeg
git clone -b jellyfin-mpp --depth=1 https://dgithub.xyz/nyanmisaka/mpp.git rkmpp
git clone -b jellyfin-rga --depth=1 https://dgithub.xyz/nyanmisaka/rk-mirrors.git rkrga
git clone --depth=1 https://dgithub.xyz/nyanmisaka/ffmpeg-rockchip.git ffmpeg
需要注意的是,我们最好是用GITHUB的镜像网站,速度快一些稳定一些。
然后接下来编译RKMPP。
cd rkmpp
mkdir rkmpp_build
sudo apt-get install cmake
cd rkmpp_build
cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DBUILD_TEST=OFF ..
因为,我们接下来编译的过程中需要用到cmake,所以需要先安装cmake然后再使用命令即可!
make -j 16
接下来就可以编译了,得益于强大的CPU能力,我们很快就完成了!
sudo make install
接下来,我们还需要进行安装,注意在安装时是需要root权限的!
然后我们再编译rkrga,因为接下来我们还会需要meson,所以也需要提前安装好。
cd ~/ffmpeg
sudo apt install meson
meson setup rkrga rkrga_build --prefix=/usr --libdir=lib --buildtype=release --default-library=shared -Dcpp_args=-fpermissive -Dlibdrm=false -Dlibrga_demo=false
接下来我们需要进行配置!
meson configure rkrga_build
然后我们需要进行安装,同样需要root权限。
sudo ninja -C rkrga_build install
接下来,我们就需要编译ffmpeg正主了,首先我们需要配置一下。
cd ffmpeg/
./configure --prefix=/usr --enable-gpl --enable-version3 --enable-libdrm --enable-rkmpp --enable-rkrga
然后,我们进行编译。
make -j 16
可以看到已经编译成功了!
接下来我们测试一下ffmpeg是否编译成功,是否把rkmpp编译进去,可以看到解码器已经编译进去了!
./ffmpeg -encoders | grep rkmpp
接下来,我们再测试编码器,可以看到也没问题了!
sudo make install ffmpeg -version
然后我们再将ffmpeg也进行安装,安装好了以后再查看一下ffmpeg的版本,我们就可以看到不管版本还是编译选项都和自带的ffmpeg不同!
然后,我们再查看一下/usr/include里,就可以看到里面已经包含ffmpeg的头文件了!