Qt6 QMediaPlayer播放视频没有声音或者无法播放声音报错handleSourceError: 0x8007007B解决方法(无需下载解码器)

这篇具有很好参考价值的文章主要介绍了Qt6 QMediaPlayer播放视频没有声音或者无法播放声音报错handleSourceError: 0x8007007B解决方法(无需下载解码器)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Qt6 QMediaPlayer播放视频没有声音

Qt5到Qt6时变动了许多类QMediaPlayer也在其中。曾经只需要这样即可播放视频。

    player = new QMediaPlayer(this);
    videoWidget = new QVideoWidget(this);
    videoWidget->resize(500, 300);
    player->setVideoOutput(videoWidget);
    player->setMedia(QUrl::fromLocalFile("D:/video.mp4"));
    player->play();

而如今需要这样

 	player = new QMediaPlayer(this);
    videoWidget = new QVideoWidget(this);  
    videoWidget->resize(500, 300);
    player->setVideoOutput(videoWidget);
    player->setSource(QUrl("D:/video.mp4"));
    player->play();

这样写完后运行,发现视频可以播放了,但是发现了个问题,播放的视频没有声音。打开浏览器搜索,发现好像没有类似问题的文章。至少笔者没找到太多类似的。有也是大部分都是Qt5的。碰到类似问题的朋友应该也有。所以笔者决定写这篇文章。希望能帮到大家,顺便笔者也是自己记录一下。
Qt6中想要正常播放视频(正常播放音乐)需要另外配置音频输出设备的。如下代码可以正常播放

    player = new QMediaPlayer(this);
    audioOutput = new QAudioOutput(this);
    videoWidget = new QVideoWidget(this);
    videoWidget->resize(500, 260);
    player->setAudioOutput(audioOutput);
    player->setVideoOutput(videoWidget);
    player->setSource(QUrl("D:/video.mp4"));
    player->play();

有些细心的朋友可以已经发现了,我在上面用的全是绝对路径。但是我们在写项目的时候很少用绝对路径。Qt项目中我们经常用qrc文件。如果我们把上面的代码中的绝对路径换成相对路径后发现又报错了。报错代码是handleSourceError: 0x8007007B。

 	player = new QMediaPlayer(this);
    audioOutput = new QAudioOutput(this);
    videoWidget = new QVideoWidget(this);
    videoWidget->resize(500, 260);
    player->setAudioOutput(audioOutput);
    player->setVideoOutput(videoWidget);
    player->setSource(QUrl(":/video.mp4"));
    player->play();
    // 报错:handleSourceError: 0x8007007B

如果想要在qrc文件下正常使用QMediaPlayer文件路径不仅可以写成绝对路径还可以写成URL。怎么把路径写成URL?很简单,就在你的相对路径最前面加上qrc即可。

例如:":/res/video.mp4"->"qrc:/res/video.mp4"

完整测试代码如下:文章来源地址https://www.toymoban.com/news/detail-539602.html

// widget.h
#ifndef WIDGET_H
#define WIDGET_H

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

class Widget : public QWidget

{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
    QMediaPlayer *m_player = nullptr;
    QAudioOutput *m_audioOutput = nullptr;
    QVideoWidget *m_videoWidget = nullptr;
};

#endif // WIDGET_H

// widget.cpp
#include "widget.h"
#include <QPushButton>
#include <QFileDialog>
#include <QLabel>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    this->setFixedSize(500, 300);
    this->setWindowFlag(Qt::WindowMaximizeButtonHint, false);

    m_player = new QMediaPlayer(this);
    m_audioOutput = new QAudioOutput(this);
    m_videoWidget = new QVideoWidget(this);
    m_videoWidget->resize(500, 260);
    m_player->setAudioOutput(m_audioOutput);
    m_player->setVideoOutput(m_videoWidget);

    QPushButton *btn1 = new QPushButton(this);
    btn1->move(200, 270);
    btn1->setText("play");
    connect(btn1, &QPushButton::clicked, [=]() {
        QString str = QFileDialog::getOpenFileName();
        m_player->setSource(QUrl(str));
        // m_player->setSource(QUrl("qrc:/res/what_are_you_doing_one.mp3"));
        m_player->play();
    });
}

Widget::~Widget()
{

}

// main.cpp
#include "widget.h"

#include <QApplication>


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

到了这里,关于Qt6 QMediaPlayer播放视频没有声音或者无法播放声音报错handleSourceError: 0x8007007B解决方法(无需下载解码器)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决谷歌浏览器无法自动播放HTML文件的声音和视频问题的方法

    首先,先检测一下浏览器是否能支持自动播放,点击下方链接进行检测: https://video-dev.github.io/can-autoplay/ 本人检测的谷歌浏览器结果是: 结果显示,谷歌浏览器不能支持有声自动播放视频和音频,包括内联的视频,但静音的视频是支持支持自动播放的,但静音的音频功能依

    2024年02月01日
    浏览(47)
  • 【Unity声音与视频播放】播放声音视频、代码控制、UI播放视频

    闲谈: 游戏开发比普通软件开发难也是有原因的,第一 游戏功能需求变化多样内部逻辑交错纵横, 而软件相对固定,无非也就是点击跳转、数据存储 第二,游戏需要很多3D数学知识、物理知识,最起码得有高中物理的基础,力、向量、射线,除了这些数据存储一样不少 但是

    2024年02月19日
    浏览(39)
  • uniapp—— 微信小程序ios上音频播放没有声音

    uniapp 打包小程序后发现 播放音频文件  没有报错, 一切正常只是没有声音,后来发现是ios手机开启了静音模式导致听不到声音,查看uniapp 文档:  发现的确有这个属性,但是设置了 之后发现并没有起作用 后来发现想要实现ios静音模式下也可以播放音频要用另一个api全局配

    2024年02月13日
    浏览(148)
  • vue+萤石云ezuikit.js播放直播流视频(声音自动关闭,添加控件,多个视频播放)

    vue+萤石云ezuikit.js播放直播流视频(声音自动关闭,添加控件,多个视频播放) 实例使用 引入最新的ezuikit.js 看过官网的文档都知道萤石云的文档是多么的‘善解人意’哈,懂得都懂,很多东西没有说清楚的,只能靠自己去摸索或者看他们的demo来一点点测试实现 官网地址:

    2024年02月04日
    浏览(124)
  • 笔记本电脑没有麦克风,声音无法找到输入设备

    新买的电脑没有扬声器,电脑声音没有输入设备,在开腾讯会议的时候才发现竟然有这个问题。 网上找原因,哎,找了一大堆每一个靠谱的 这让我想起来上次电脑没有热键的问题,所有问题的终极解决方案,都在源头那里,网上的这些东西都是大家从源头那里吸收消化过的

    2024年02月07日
    浏览(77)
  • 解决:win10有提示音,但是播视频没有声音

    右下角的声音图标,右键单击,选择\\\"声音”,找到播放,双击负责播放的设备,进入设备属性页,然后取消勾选“启用音频增强”。

    2024年02月12日
    浏览(57)
  • 【方便的Opencv】实现播放有声音的视频+附带图片生成gif

            因为最近老是用到Opencv这个库来处理视频,过程遇到了非常多的细节问题,最后把成品干脆直接放到博客来,这样以后可以随时过来取用。         Opencv读取视频没有声音的原因是因为:视频是分为图像与音频的,Opencv仅仅只是读取了一帧帧图像,并没有读取

    2023年04月09日
    浏览(45)
  • 【双核浏览器ChromeCore播放视频出错,重影、有声音但黑屏、缺角······】

        目录 一、【问题】 二、【解决方法】   1、找客服【首选】  2、去官网下载新版本 安装 (或者找客服要安装包)           这两天用 双核浏览器 打开哔哩哔哩播放视频时,却发现 页面很卡、视频播放不正常 (黑屏,或者加载半天也没反应,切换页面后,视频上面还

    2023年04月09日
    浏览(37)
  • bilibili 获取播放器(或者视频)地址

    Bilibili播放-获取B站播放视频源地址的过程_ucsheep的博客-CSDN博客_bilibili视频地址 如何获取 b站视频 纯播放_三叶啦的博客-CSDN博客 bilibili-api 开发文档

    2024年02月12日
    浏览(43)
  • HTML5中视频标签学习中出现只显示声音而没有画面的情况。

    作为一名程序小白,这是第一篇博客,目的在于记录自己学习过程中遇见的问题,怎么去解决问题。 1、这是使用的视频标签: 2、出现的问题:只有声音没有画面 3、查阅资料总结: (1)视频的格式是否支持: 目前html的video元素支持一下三种视频格式: MP4 : MPEG4 文件使用

    2024年02月08日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包