如何序列化QSound?

时间:2011-10-19 17:33:52

标签: c++ qt qt4 wav

我正在寻找一种方法来持久存储一些* .wav声音。

在我的应用程序中,我已经使用 boost 将一些内容序列化到一个小的二进制数据库中。现在我也试图在这个数据库中存储QSounds,如果显然不能正常工作。我不想将wav文件传递给exe,而是将它们编译到exe或单独的数据文件中。

有没有办法序列化QSound或者我应该尝试其他方式吗?

  • 是否有替代方法可以使用C ++或Qt处理wav文件?
  • 有什么方法可以存储和恢复这些文件,而不会让它们作为wav文件存在?

我经常使用boost序列化,所以我的第一个想法是将它用于那些文件。也许有人可以给我一些关于我应该看看的提示。

2 个答案:

答案 0 :(得分:2)

QSound相对原始。 Qt Phonon模块具有更多功能。

您应该查看MediaObject类(可以将字节数组作为输入),或者MediaSource类(在序列化API之上实现自定义QIODevice)。

虽然Phonon是一个很大的模块,可能不适合你的用例。

另一个选项是QtMultimedia模块和QAudioOuput类,它也可以将QIODevice作为数据源。

答案 1 :(得分:2)

QSound是一个简单的播放声音类,而不是“声音对象”(在我看来有点不幸的命名)。

您可以使用Qt resources将文件存储在exe中。