Ubuntu环境下Qt 6及以上版本multimedia模块故障及音频播放咨询
Ubuntu 22.04下Qt 6+多媒体模块报错与音频播放解决方案
先解决"Unknown module(s) in QT: multimedia"问题
- 补全系统依赖:Qt 6在Linux上依赖GStreamer处理多媒体,终端执行以下命令安装完整依赖:
sudo apt install libqt6multimedia6 libqt6multimediawidgets6 libqt6multimediaquick6 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly - 检查Qt安装组件:打开Maintenance Tool,找到你使用的Qt 6.x版本,确认Additional Libraries > Qt Multimedia组件已勾选安装——很多时候该组件默认不会被包含在基础安装包内。
- 验证Kit配置:在Qt Creator中进入「工具>选项>构建和运行>Kit」,选中当前使用的Kit,查看对应Qt版本的安装路径下是否存在
lib/cmake/Qt6Multimedia目录,若不存在则说明该Qt版本未安装Multimedia组件,需重新通过Maintenance Tool添加。 - 清理缓存重构建:删除项目目录下以
build-开头的文件夹,重新执行qmake并构建项目,旧缓存常导致模块识别异常。
实现Qt 6+音频播放(支持MP3/WAV)
模块正常识别后,使用Qt 6的QMediaPlayer+QAudioOutput新API即可完成播放:
- .pro文件中确保添加以下配置:
QT += core gui multimedia widgets
- 简单播放示例代码:
头文件:
#include <QMediaPlayer> #include <QAudioOutput> #include <QPushButton> #include <QWidget> class AudioPlayer : public QWidget { Q_OBJECT public: explicit AudioPlayer(QWidget *parent = nullptr); private slots: void playAudio(); private: QMediaPlayer *player; QAudioOutput *audioOutput; };
源文件:
#include "audioplayer.h" AudioPlayer::AudioPlayer(QWidget *parent) : QWidget(parent) { player = new QMediaPlayer(this); audioOutput = new QAudioOutput(this); player->setAudioOutput(audioOutput); QPushButton *playBtn = new QPushButton("播放音频", this); connect(playBtn, &QPushButton::clicked, this, &AudioPlayer::playAudio); } void AudioPlayer::playAudio() { // 替换为你的音频文件本地路径,MP3或WAV格式均支持 player->setSource(QUrl::fromLocalFile("/home/yourname/Music/test.mp3")); audioOutput->setVolume(0.7); // 音量范围0-1 player->play(); }
- 备注:MP3解码依赖之前安装的GStreamer插件,WAV为无压缩格式,无需额外插件即可直接播放。
内容的提问来源于stack exchange,提问作者asi siyah
相关产品推荐
相关产品推荐

