QMediaPlayer可以播放.wav音频文件吗?

时间:2016-02-16 06:16:33

标签: macos qt multimedia qmediaplayer

我在mac(OSX Yosemite Version 10.10.5)上使用qt(最新版本)编写了一个测试应用程序来播放'.wav'音频文件。这是来自cpp文件的代码。

#include "widget.h"
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
m_player = new QMediaPlayer(this);
connect(m_player, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)), this, SLOT(onMediaStatusChanged()));
connect(m_player, SIGNAL(positionChanged(qint64)), this, SLOT(onProgressed(qint64)));
m_player->setMedia(QMediaContent(QUrl("/Users/testUser/Library/Metal.wav")));
m_player->play();
}

Widget::~Widget()
{
}

void Widget::onProgressed(qint64 pos)
{
    qDebug()<<"Position is:"<<pos;
}

void Widget::onMediaStatusChanged()
{
    qDebug()<<"Media Status Changed:" << m_player->mediaStatus() << " " << m_player->error();
}

这是我得到的输出

  

媒体状态已更改:QMediaPlayer :: LoadingMedia QMediaPlayer :: NoError
  [11:16:13.300] FigByteFlumeCustomURLOpen发信号错误= -12936(kFigByteFlumeError_BadState)(无提供者)at /SourceCache/CoreMedia/CoreMedia-1562.240/Prototypes/FigHTTP/FigByteFlumeCustomURL.c line 1486
  媒体状态已更改:QMediaPlayer :: InvalidMedia QMediaPlayer :: FormatError

我不明白为什么我会收到格式错误,但是,Windows中相同的代码(除了轨道的路径)工作正常。 我是否修复了Mac上的QMediaPlayer或我是否应该使用其他API来播放.wav个文件?

任何帮助将不胜感激!感谢。

1 个答案:

答案 0 :(得分:1)

我怀疑失败的原因(或至少其中一个)是您将文件路径传递给QUrl而不是URL。所以你要么设置&#34; file:///Users/testUser/Library/Metal.wav"或者您使用QUrl :: fromLocalFile(&#34; /Users/testUser/Library/Metal.wav")。