1

我正在研究 Qt 中的一个特殊应用程序,它将其 .mp3 音频文件作为 BLOB 数据存储在 QSQLITE 数据库中。

使用以下代码,我创建了一个 QByteArray:

QByteArray array = query->value(0).toByteArray();

然后我尝试用 QMediaPlayer 播放声音:

mediaPlayer.setMedia(   QMediaContent(   QUrl::fromEncoded(array)   )   );
mediaPlayer.play();

但不幸的是,我收到了这个错误:

DirectShowPlayerService::doSetUrlSource: Unresolved error code 800c000d

我想要实现的主要目标是能够播放存储在 QByteArray 中的这些 .mp3 文件。

注意:在这种特殊情况下,不可能只将路径存储在数据库中。

我真的非常感谢您的帮助。非常感谢!

4

1 回答 1

4

您需要将QByteArrayas 提供QIODevice给 的stream参数QMediaPlayer::setMedia(const QMediaContent & media, QIODevice * stream = 0)

尝试以下操作:

QBuffer mediaStream(&array);
mediaPlayer.setMedia(QMediaContent(), &buffer);
mediaPlayer.play();
于 2014-03-16T23:13:25.560 回答