我想在buttonpress上播放声音,我有一个工作代码。按下Qt播放音频;高效
Phonon::MediaObject *bulletPlay = new Phonon::MediaObject(this);
bulletPlay -> setCurrentSource(Phonon::MediaSource("newBullet3.wav"));
playOutput = new Phonon::AudioOutput(Phonon::MusicCategory, this);
Phonon::createPath(bulletPlay, playOutput);
bulletPlay->play();
但在做所有的按钮按下这些东西导致性能受到伤害。我了解每次光盘访问都是原因。 (嗯..你可以说,文件将反正在内存中,因此没有磁盘访问每个按钮按下缓冲区缓存和所有..但这个代码是造成性能严重受伤。)
那么什么我只是做了
static Phonon::MediaObject *bulletPlay;
static Phonon::AudioOutput *playOutput;
static Phonon::MediaSource *filePath;
在我的课。并在构造函数
bulletPlay = new Phonon::MediaObject(this);
filePath = new Phonon::MediaSource("newBullet3.wav");
bulletPlay -> setCurrentSource(*filePath);
playOutput = new Phonon::AudioOutput(Phonon::MusicCategory, this);
Phonon::createPath(bulletPlay, playOutput);
和bulletPlay->play();
on buttonpress。
但它只是第一次播放声音。因此,似乎我必须每次使用bulletPlay -> setCurrentSource(*filePath);
来设置当前资源。那么我该如何去做呢?我不想每次都设置当前资源..我无法测试应用性能测试也因为测试是在客户端..
您是否在调用play()之前尝试[seek](http://qt-project.org/doc/qt-4.8/phonon-videoplayer.html#seek)? – 2013-04-04 15:25:28