Qt音乐播放器移植到imx6ull的一系列问题

记录一下将Qt音乐播放器移植到正点原子imx6ull阿尔法开发板上所遇到的一些问题,以及部分问题的原因和解决方法
首先说明一下背景,我在初步进行音乐播放器移植的时候使用的是在驱动教程中通过BusyBox所构建的根文件系统,已经按照正点原子教程移植好了Qt。

问题一:defaultServiceProvider::requestService(): no service found for - “org.qt-project.qt.mediaplayer”

这个问题是后续遇到一系列问题的开始,也是由这个问题而引出了后续的一系列问题。
在这里插入图片描述

defaultServiceProvider::requestService(): no service found for - “org.qt-project.qt.mediaplayer”,这个问题是将Qt所生成的音乐播放器的可执行程序放到开发板上所打印的错误。需要注意的是,可执行程序可以运行,但是却不能正常播放音乐。
先给出这个问题的原因:经过我的摸索,我发现这个报错的是由于开发板的根文件系统上缺少了gstreamer的某个插件而导致的(如果你将根文件系统切换为正点原子出场的根文件系统是不会有这个错误的)。这个插件指的是gst-plugins-base、gst-plugins-good、gst-plugins-bad,gst-plugins-ugly这里边其中的一个(因为没有仔细研究过,所以不知道具体是哪个,可以都安装上)。
为解决这个问题,我尝试过在现有的根文件系统上移植gstreamer,但是最终卡在了插件安装上,这个后边连同移植过程再记录。
除此之外,我最终通过buildroot构建根文件系统解决了这个问题,使用的是buildroot-2024.02.4这个版本,只不过他也有一系列的问题。

详细说明:要确保能够解决这个错误建议在配置buildroot的时候添加上以下选项
->Target packages
->Audio and video applications
->gstreamer 1.x
->gst1-plugins-base -->(这里的内容建议选择认为和音视频播放有关的)
->gst1-plugins-good -->(这里的内容建议选择认为和音视频播放有关的)
->gst1-plugins-bad -->(这里的内容建议选择认为和音视频播放有关的)
->gst1-plugins-ugly -->(这里的内容建议选择认为和音视频播放有关的)
除此之外,音乐播放还需要其他的插件,比如解码的等等,这里当时没有记录记不太清了,只记得因为播放的音乐是mp3格式的,所以在编译好后有一个新的错误是:
Warning: “No decoder available for type ‘application/x-id3’.”
这个错误存在时也是无法正常播放MP3音乐的,问了AI和搜索了一下,可能原因是没有找到合适的解码器来正确对MP3格式的音乐进行解码,我的
做法是在上边提到的gstreamer 和他的插件base、good、bad、ugly中添加了所有和mp3相关的配置选项并添加了以下配置选项:
->Target packages
->Audio and video applications
->mpg123
这样不能播放音乐的问题基本就解决了。(记得配置声卡)

问题二:alsa-lib parser.c:2783:(load_toplevel_config) Unable to find the top-level configuration file ‘/usr/share/alsa/ucm2/ucm.conf’. alsa-lib main.c:1554:(snd_use_case_mgr_open) error: failed to import hw:0 use case configuration -2

这个问题是在我使用命令:
alsactl -f /var/lib/alsa/asound.state restore
遇到的,就是alsactl可以保存声卡配置,但是当使用他恢复声卡配置的时候会遇到这个问题,这个问题我并没有得到解决办法,但是由于alsactl是alsa的工具所以我怀疑是我使用版本的buildroot所构建的alsa有问题,于是我就在使用buildroot构建根文件系统的时候就放弃构建了alsa-utils,只添加alsa-lib供其他需要这个库的工具使用。
在构建完成后再将alsa-utils移植过去,这样就不会出现这个问题了

另外就是,估计也是由于buildroot构建的alsa-utils有问题,所以我在正常能播放的时候会遇到这个警告:
Warning: “No volume control found”
这个警告虽然出现,但是能正常播放音乐,但是当我移植alsa-utils之后,这个问题也不见了。

问题三:gstreamer移植

gstreamer的移植非常复杂,需要很多的其他链接库的支持,这里具体过程可以参考这篇文章:gstreamer移植
这里建议和这篇文章中一样,建立一个公用的文件夹,将连接库都安装到这里,这样最后配置gstreamer的时候就不需要区分各个文件夹了
但是最终,我卡在了插件安装上,就是连base插件都没有安装成功,在编译的时候有很多的报错,但是基本搜索不到,甚至说是关于gstreamer交叉编译的内容都很少,我反映过来可能是因为可以通过buildroot或者Yocto可以很轻松的就构建好了gstreamer的完整配置,所以做这个相关内容的就比较少,于是就不再继续深究了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值