【问题标题】:Unable to play two sounds at the same time无法同时播放两种声音
【发布时间】:2012-05-22 21:05:16
【问题描述】:

谁能解释一下为什么我不能同时播放两种声音?

这里是部分代码:

#include <fmod.h>

FMOD_SYSTEM *system;
FMOD_SOUND *dooropen;
FMOD_SOUND *keydoor;
FMOD_SOUND *slap;
FMOD_SOUND *bomb;
FMOD_SOUND *scratch;
FMOD_SOUND *secret;
FMOD_SOUND *pickey;
FMOD_SOUND *caisse;

FMOD_RESULT resultat1;
FMOD_RESULT resultat2;
FMOD_RESULT resultat3;
FMOD_RESULT resultat4;
FMOD_RESULT resultat5;
FMOD_RESULT resultat6;
FMOD_RESULT resultat7;
FMOD_RESULT resultat8;


FMOD_System_Create(&system);
FMOD_System_Init(system, 1, FMOD_INIT_NORMAL, NULL);


resultat1 = FMOD_System_CreateSound(system, "sound/door-open.mp3", FMOD_CREATESAMPLE, 0, &dooropen);

resultat2 = FMOD_System_CreateSound(system, "sound/key-door.wav", FMOD_CREATESAMPLE, 0, &keydoor);

resultat3 = FMOD_System_CreateSound(system, "sound/slap.wav", FMOD_CREATESAMPLE, 0, &slap);

resultat4 = FMOD_System_CreateSound(system, "sound/bomb.wav", FMOD_CREATESAMPLE, 0, &bomb);

resultat5 = FMOD_System_CreateSound(system, "sound/scratch.wav", FMOD_CREATESAMPLE, 0, &scratch);

resultat6 = FMOD_System_CreateSound(system, "sound/secret.wav", FMOD_CREATESAMPLE, 0, &secret);

resultat7 = FMOD_System_CreateSound(system, "sound/pickey.wav", FMOD_CREATESAMPLE, 0, &pickey);

resultat8 = FMOD_System_CreateSound(system, "sound/caisse.wav", FMOD_CREATESAMPLE, 0, &caisse);

我这样称呼我的声音:

FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, scratch, 0, NULL);
FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, bomb, 0, NULL);

我认为是频道问题,因为当我播放“炸弹”时,我可以听到它(这个声音大约是 3 秒),但如果出现“刮擦”声,那么“炸弹”的声音就会停止……

【问题讨论】:

    标签: c fmod


    【解决方案1】:

    FMOD_System_Init() 中的第二个参数是 maxchannels。只需将其设置为 2 或更高。在官方教程中他们使用 100。

    【讨论】:

      【解决方案2】:

      如前所述,使用更多通道初始化系统

      在每个FMOD_System_PlaySound 之后更新FMOD_SYSTEM

      插入

      FMOD_System_Update(system);
      

      那就没事了。

      【讨论】:

        【解决方案3】:

        尝试为您想要同时播放的声音量创建新系统,或者您可以尝试使用 FSOUND_Play 而不是 FSOUND_Init。

        或者您也可以查看 Hekkus 音响系统。我已经将它用于多种声音并且可以使用,但它不支持 mp3。

        【讨论】:

        • 谢谢,我又创建了 7 个系统,它运行良好,但我认为这不是最好的解决方案。我不明白为什么我需要为每个声音创建一个系统!
        【解决方案4】:

        为每个声音创建一个通道,它可以正常工作或使用 FMOD_CHANNEL_FREE

        【讨论】:

          猜你喜欢
          • 2014-10-20
          • 2018-02-07
          • 1970-01-01
          • 1970-01-01
          • 2011-05-20
          • 1970-01-01
          • 1970-01-01
          • 2011-08-10
          相关资源
          最近更新 更多