Занялся написанием небольшой игрушки и вот добравшись до музыкально-звуковой составляющий столкнулся с проблемой.
QMediaPlayer *bulletSound = new QMediaPlayer();
bulletSound->setMedia(QUrl("qrc:/rsc/sounds/bullet.mp3"));
if (bulletSound->state() == QMediaPlayer::PlayingState) {
bulletSound->setPosition(0);
} else if (bulletSound->state() == QMediaPlayer::StoppedState) {
bulletSound->play();
}
Этот звуковой файл должен воспроизводиться всякий раз, когда игрок делает выстрел. И он воспроизводится, но когда снаряд пролетит уже приличное расстояние. Имеет место быть какая-то задержка. Как свести ее к минимуму?
Делается через предзагрузку. Ваши файлы просто читаете в буферы, которые где-то размещаете в памяти, при вызове метода стрельбы соответственно вызываете
QBuffer tmp(&bullet_sound_array);
mediaPlayer.setMedia(QMediaContent(), &tmp);
mediaPlayer.play();
В этом примере надо следить, чтобы tmp буфер существовал до конца воспроизведения, поэтому лучше сразу после чтения перегонять QByteArray в QBuffer
Также можно попробовать разместить аудио файлы в .qrc файле, но это раздует .ехе до неимоверных размеров.
Продвижение своими сайтами как стратегия роста и независимости