Почему playSound не выводит звук с помощью FMOD на окнах? - PullRequest
0 голосов
/ 25 июля 2010
FMOD_RESULT result;
FMOD::System *system;

result = FMOD::System_Create(&system);      
if (result != FMOD_OK)
{
    printf("FMOD error! (%d) %s\n", result, FMOD_ErrorString(result));
}

result = system->init(100, FMOD_INIT_NORMAL, 0);    
if (result != FMOD_OK)
{
    printf("FMOD error! (%d) %s\n", result, FMOD_ErrorString(result));
}

FMOD::Sound *sound;
result = system->createSound("01.mp3", FMOD_DEFAULT, 0, &sound);        // FMOD_DEFAULT uses the defaults.  These are the same as FMOD_LOOP_OFF | FMOD_2D | FMOD_HARDWARE.
ERRCHECK(result);

FMOD::Channel *channel;
result = system->playSound(FMOD_CHANNEL_FREE, sound, false, &channel);
ERRCHECK(result);

Я проследил приведенный выше код, ошибки / предупреждения нет, но 01.mp3 не воспроизводится, почему?

1 Ответ

1 голос
/ 25 июля 2010

Хотя код выглядит нормально для меня, учтите, что playSound() является асинхронным. Если вы выходите сразу после этого, у звука никогда не будет времени для воспроизведения. E.g.:

int main() {
    // ...
    sytem->playSound(FMOD_CHANNEL_FREE, sound, false, &channel);
    // playSound() returns directly, program exits without sound being heard
}

В качестве быстрого обходного пути для тестирования (и не зная, как будет выглядеть ваше приложение), вы можете подождать ввода с консоли:

result = system->playSound(FMOD_CHANNEL_FREE, sound, false, &channel);
// ...
std::cout << "Press return to quit." << std::endl;
std::cin.get();
...