如何在Qt5中播放声音(Qt4迁移)?

2024-01-15

在Qt4中我曾经使用过

QT += multimedia phonon
//...
#include <Phonon>
//...
        Phonon::MediaObject *mediaObject = Phonon::createPlayer(Phonon::NoCategory, Phonon::MediaSource(QUrl("./assets/audio/window_appear.wav")));
        //   "\"" + Qdir().absolutePath() + "/audio/click.wav" + "\""
        mediaObject->play();

一切都很好。但现在Qt 5 不支持声子。 https://bugreports.qt-project.org/browse/QTBUG-26471所以我想知道 - 如何在 Qt5 中播放声音等媒体文件?

使用WebKit? (这是完全有可能的,但从很多角度来看都有点糟糕)


在 Qt4 的后续版本中,Qt 开发人员已经开始减少在 Phonon 集成方面的工作,转而专注于 Qt Multimedia 和 Qt Mobility 模块。尽管他们仍然支持声子。

正如你所说,从 Qt5 开始,不再支持 Phonon。所以看看Qt多媒体 http://qt-project.org/doc/qt-5.0/qtmultimedia/multimediaoverview.html相反,特别是QA音频输出 http://qt-project.org/doc/qt-5.0/qtmultimedia/qaudiooutput.html.

如内所列他们的文档 http://qt-project.org/doc/qt-5.0/qtmultimedia/qaudiooutput.html在“详细描述”下,播放音频文件如下所示:

QFile inputFile;     // class member.
QAudioOutput* audio; // class member.
inputFile.setFileName("/tmp/test.raw");
inputFile.open(QIODevice::ReadOnly);

QAudioFormat format;
// Set up the format, eg.
format.setFrequency(8000);
format.setChannels(1);
format.setSampleSize(8);
format.setCodec("audio/pcm");
format.setByteOrder(QAudioFormat::LittleEndian);
format.setSampleType(QAudioFormat::UnSignedInt);

QAudioDeviceInfo info(QAudioDeviceInfo::defaultOutputDevice());
if (!info.isFormatSupported(format)) {
    qWarning()<<"raw audio format not supported by backend, cannot play audio.";
    return;
}

audio = new QAudioOutput(format, this);

connect(audio,SIGNAL(stateChanged(QAudio::State)),SLOT(finishedPlaying(QAudio::State)));
 audio->start(&inputFile);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Qt5中播放声音(Qt4迁移)? 的相关文章

随机推荐

  • 将 JavaScript NodeList 转换为数组的最快方法?

    之前在这里回答过的问题说这是最快的方法 nl is a NodeList var arr Array prototype slice call nl 在我的浏览器上进行基准测试时 我发现它比这个慢 3 倍以上 var arr for var
  • Ant4Eclipse 示例

    我目前正在使用标准 Ant 我想转移到 Ant4Eclipse http www ant4eclipse org 以利用我的 eclipse 项目已经拥有的类路径信息来构建它并运行单元测试 我发现的问题是我找不到使用 ant4eclipse
  • CSV 更改分隔符

    我正在读取 CSV 文件并将分隔符从 更改为 但是 我在我的数据 我无法控制 中注意到 在某些情况下 我有一些数据不想遵循此规则 并且它包含带有逗号的引用数据 我想知道如何最好地不替换这些异常 例如 ABSON TE Wick Lane A
  • 使用 MAMP 在 Mac OS 中通过终端连接到 MYSQLi

    我正在尝试通过 Mac 中的终端运行我的 PHP 脚本 当我尝试运行该脚本时 出现以下错误 警告 mysqli connect HY000 2002 没有这样的文件或目录 这就是我尝试连接的方式 mysqli connect localho
  • 使用 docker-composer 进行扩展并向主机名添加数字?

    我有一个docker compose yml master build slave image master hostname slave command run slave 我怎样才能使docker compose scale slave
  • 更新后反应输入光标移动到末尾

    当我更新输入字段中的值时 光标移动到字段的末尾 但我希望它保持在原来的位置 什么可能导致此问题
  • 使用WEKA时找出错误分类的实例

    我正在使用 WEKA 的 GUI 版本 并使用朴素贝叶斯进行分类 谁能告诉我如何找出哪些实例被错误分类 转到 Weka 资源管理器中的分类选项卡 单击更多选项 检查输出预测 Click OK 希望有帮助
  • 如何在 uitextfield 中显示 pickerview 而不是键盘?

    我想在成为 UITextfield 而不是键盘的 FirstResponder 时显示 UIPickerView 并在选择器视图的文本字段中填充值 有人知道吗 使用 textfield InputView uipickerView 替换系统
  • SmtpClient“由于数据包格式意外,握手失败”

    我使用 SmtpClient 发送电子邮件 代码如下 SmtpClient client new SmtpClient host 587 client EnableSsl true client Credentials new System
  • 如何从一个Windows控制台应用程序向另一个应用程序发送消息?

    我有一个启动子进程的 Windows 控制台应用程序 如何向子进程发送消息 我发现类似的功能PostMessage PeekMessage http msdn microsoft com en us library windows desk
  • Java 中缺失值

    Java中可以用什么语句来表示变量的缺失值 比如我想写一段代码 if a gt 23 income pay rate else income is missing 这个线程中有很多不好的建议 首先让我谈谈为什么你应该not采取一些建议的方法
  • 将 Golang JSON 存储到 Postgresql 中

    我想将某个结构存储到我的数据库中 其中有一个 JSON 字段 type Comp struct CompId int64 db comp id json comp id StartDate time Time db start date j
  • stack.yaml 文件和 .cabal 文件有何区别?

    我最近开始在为项目指定外部依赖项时使用 Haskell 堆栈 有时您将其放置在 cabal 文件中 而有时您将其放置在 yaml 文件中 我是否正确地认为 当您将其放入 cabal 文件中时 它只会在堆栈存储库中查找您的包 但是 当您将其放
  • Android SDK Manager 安装特定版本的 NDK Bundle

    我正在尝试安装 NDK 15c 但我似乎不知道如何告诉 sdkmanager 版本 如果我跑 sdkmanager ndk bundle 我会得到我不想要的最新的 我尝试了不同的组合 但没有任何效果 sdkmanager ndk bundl
  • Akka actor 查找或依赖注入

    我刚刚开始使用 Akka 我无法决定是否应该使用依赖注入 如蛋糕模式 或 actor 查找来将 actor 彼此解耦 首选方法是什么 您应该更喜欢向彼此介绍 Actor 这意味着在消息中发送 ActorRef 或与消息一起发送 或者将其传递
  • CouchDB 中的树

    我是 CouchDB 新手 有一个问题 我正在使用父消息的 ID 作为属性来保存消息 消息还可以有一个 childMessage 作为父级 因此它看起来像一棵树 我如何查询所有孩子 包括孩子的孩子 谢谢 这是处理分层数据时常用的方法 htt
  • Rails 如何优化我的网站?

    我想让我的网站更快 我知道我可以制作 CSS 精灵并压缩 HTML 和 CSS 还有其他方法可以优化页面速度吗 此页面就是一个示例 http www vinderhimlen dk konkurrencer vind elektronik
  • 如何防止 BeautifulSoup4 在汤中添加额外的 标签? [复制]

    这个问题在这里已经有答案了 在 BeautifulSoup 3 之前的版本中 我可以获取任何 HTML 块并通过以下方式获取字符串表示形式 from BeautifulSoup import BeautifulSoup soup3 Beau
  • 使用 PHP 确定本地文件的 Mime 类型(内容类型)

    我正在尝试确定文件的 mime 类型 我尝试了几种方法 但没有想出任何可以提供一致输出的方法 我试过了 mime mime content type file and mime exec file bi file 我正在提供图像 CSS 和
  • 如何在Qt5中播放声音(Qt4迁移)?

    在Qt4中我曾经使用过 QT multimedia phonon include