我在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
个文件?
任何帮助将不胜感激!感谢。
答案 0 :(得分:1)
我怀疑失败的原因(或至少其中一个)是您将文件路径传递给QUrl而不是URL。所以你要么设置&#34; file:///Users/testUser/Library/Metal.wav"或者您使用QUrl :: fromLocalFile(&#34; /Users/testUser/Library/Metal.wav")。