我使用QMediaPlayer
播放mp3文件,我希望设置QAudioProbe
来监听输出。但是,我对setSource()
的调用总是在以下内容中返回false:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow) {
ui->setupUi(this);
x = new QVector<double>(256);
y = new QVector<double>(256);
values = new int[256];
player = new QMediaPlayer();
player->setMedia(QUrl::fromLocalFile(
"C:/Users/Person1/Desktop/piano.mp3"));
player->setVolume(50);
audioProbe = new QAudioProbe();
if (audioProbe->setSource(player)) {
connect(audioProbe, SIGNAL(audioBufferProbed(QAudioBuffer)),
this, SLOT(updatePlot(QAudioBuffer)));
}
else {
qDebug("source not set");
}
}
请注意,player
和audioProbe
分别在QMediaPlayer
类的定义中初始化为指向QAudioProbe
和MainWindow
的指针。输出始终打印:
来源未设置
但是当我拨打player->play()
时,文件播放完美。有什么我想念的吗?我已经非常彻底地阅读了文档,我发现我使用的方法没有任何问题。我也尝试过不同的mp3文件和一些wav文件;他们都玩,但尝试设置源时会出现同样的问题。