0

我编写了一个测试应用程序,在 mac(OSX Yosemite 版本 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 在 /SourceCache/CoreMedia/CoreMedia-1562.240/Prototypes/FigHTTP/FigByteFlumeCustomURL.c 行发出 err=-12936 (kFigByteFlumeError_BadState) (无提供程序) 1486
媒体状态已更改:QMediaPlayer::InvalidMedia QMediaPlayer::FormatError

我不明白为什么会出现格式错误,但是,Windows 中的相同代码(轨道路径除外)运行良好。在 Mac 上是否有修复,QMediaPlayer或者我应该使用其他 API 来播放.wav文件吗?

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

4

1 回答 1

1

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

于 2016-02-16T07:56:29.977 回答