在SOM-RK3399上使用QT的QMediaPlayer组件实现的播放器播放视频卡顿的解决办法
1. 问题描述
开发用于SOM-RK3399平台上的应用程序,我使用的使交叉编译的方式:在我的笔记本上的Ubuntu18.04上开发,编译,然后将可执行程序再放到NFS服务器目录,在SOM-RK3399上执行。
我开发的项目主要功能是:1. 对音频、视频数据的采集;2.将音频数据和视频数据合并成一个视频文件;3. 实现对采集的视频文件的回放功能(也就是播放器的功能)
采集视频数据我使用的是V4L2,采集音频数据使用的是ALSA,对音频和视频数据进行编码使用的是FFMPEG。
起初,对视频文件(回放/解码)我也用的是FFMPEG,也能够成功解码出音频、视频数据进行回放,但是难在了一个功能上我就放弃自己使用FFMPEG解码回放了,这个难题就是对视频文件进行倍速回放,对如果以音频数据为基础,可以实现倍速播放,但是如果倍速回放一个没有音频流的视频文件,我没有找到有效的对视频倍速播放的办法,因此,转向了去查找QT有没有提供线程的播放器组件,最后找到了,参考QT的示例,成功写好的回放视频文件的功能。
但是,在我笔记本上的demo程序播放视频可以正常播放,但是放到SOM-RK3399上就特别卡,当时懵逼了,最后尝试了一下SOM-RK3399自带播放器,发现可以正常播放,所以我就将自己的demo程序拷到SOM-RK3399上编译,然后运行,可以正常播放,狂喜。。。
一看RK3399使用的是Qt5.10.0,而我目前用的是Qt5.9.5,以为是版本问题,但其实不是,最后想了一下看看可执行程序用到了哪些库,发现在SOM-RK3399上编译的和在我笔记本编译后,考过去的,使用的MutileMedia库是不同的,详细过程如下。
1.1 修改之前的avc程序的链接库
可以看到libQt5MutilmediaWidgets.so.5等库链接的是 /usr/lib/aarch64-linux-gnu/libQt5MultimediaWidgets.so.5
但是,我在SOM-RK339上链接的确是 /usr/local/Trolltech/Qt-5.10.0-rk64one/lib/libQt5MultimediaWidgets.so.5
1.2 现在修改ldconfig配置文件
sudo vim /etc/ld.so.conf.d/aarch64-linux-gnu.conf
将/usr/local/Trolltech/Qt-5.10.0-rk64one/lib放在最前,使其最先搜索到。
修改之前的内容:
修改后:
最后:重新执行以下sudo ldconfig问题得到解决。
sudo ldconfig
执行ldconfig它会更新以下/etc/ld.so.cache缓存文件