QT6环境下视频播放没有声音

本文讲述了作者在使用QT6开发视频播放器时遇到的问题,涉及到错误提示和音频无声,通过配置multimediawidgets媒体组件及管理音频输出,解决了播放器没有声音的问题。
摘要由CSDN通过智能技术生成

        跟着B站的一位UP敲一个视频播放器的小项目,代码明明是一模一样,但是就是报错,显示No member named 'xxxxxxx' in 'xxxxxxx'。好不容易找到QT6版本的替代方法,视频正常播放但是一直没有声音。最后发现是没有设置音频输出设备的问题。

解决方案:

1.在工程文件中配置 multimediawidgets 媒体组件

QT += multimediawidgets

2.引入管理和控制音频输出的头文件 <QAudioOutput>

#include <QAudioOutput>

3.在类的头文件中声明QAudioOutput类的指针对象

QAudioOutput *audiooutput;

4.在源文件中实例化QAudioOutput对象,并将音频输出设备与媒体对象关联,之后播放的视频中也会正常播放音频

//实例化音频输出对象
audiooutput = new QAudioOutput(this);

//将音频输出设备与player对象关联
player -> setAudioOutput(audiooutput);

附上全部代码

widgetshiping.h

#ifndef WIDGETSHIPING_H
#define WIDGETSHIPING_H

#include <QWidget>
#include <QMediaPlayer>
#include <QVideoWidget>
#include <QAudioOutput>
#include <QFileDialog>
#include <QDir>

QT_BEGIN_NAMESPACE
namespace Ui { class WidgetShiPing; }
QT_END_NAMESPACE

class WidgetShiPing : public QWidget
{
    Q_OBJECT

public:
    WidgetShiPing(QWidget *parent = nullptr);
    ~WidgetShiPing();
    QMediaPlayer *player;
    QAudioOutput *audiooutput;
    QVideoWidget *videowidget;

private:
    Ui::WidgetShiPing *ui;
};
#endif // WIDGETSHIPING_H

main.cpp

#include "widgetshiping.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    WidgetShiPing w;
    w.show();
    return a.exec();
}

widgetshiping.cpp

#include "widgetshiping.h"
#include "ui_widgetshiping.h"

WidgetShiPing::WidgetShiPing(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::WidgetShiPing)
{
    ui->setupUi(this);
    
    //实例化对象
    //播放媒体对象
    player = new QMediaPlayer(this);
    //音频输出对象
    audiooutput = new QAudioOutput(this);
    videowidget = new QVideoWidget(this);
    
    videowidget->resize(this->size());
    
    //将音频输出设备与player对象关联
    player -> setAudioOutput(audiooutput);
    //将视频组件与player对象关联
    player -> setVideoOutput(videowidget);
    
    //选择播放文件
    QString filePath = QFileDialog::getOpenFileName(
        this,
        "请选择视频文件",
        QDir::homePath(),
        "视频文件 (*.mp4 *.avi *.mkv *.mov);;所有文件 (*)"
        );
    // 设置视频的源文件
    player->setSource(QUrl::fromLocalFile(filePath));
    // 播放视频
    player->play();
}

WidgetShiPing::~WidgetShiPing()
{
    delete ui;
}

        刚开始学,自己跟着敲卡了好久,感觉版本过度好痛苦。感觉QT6能找到的资源也很少,希望能帮到遇到同样问题的人。

如果写的有问题的话希望看到的大佬指点以下,非常感谢!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值