Fmod Stream用于工作

Fmod Stream use to work

本文关键字:工作 用于 Stream Fmod      更新时间:2023-10-16

这是我的问题。我正在尝试设置一个流以在我的程序中播放。它曾经运行得很好,然后我更改了我的类名,现在它不再运行了,我从结果中得到了错误30。我找不到任何解释为什么它以前有效,现在无效。这是我的SoundStream.h

#include "fmod.hpp"
#include "common.h"
#include <iostream>
class SoundStream
{
public:
    FMOD::System     *system,*sys;
    FMOD::Sound      *sound, *sound_to_play;
    FMOD::Channel    *channel = 0;
    FMOD_RESULT       result;
    void startStream()
    {
        result = system->init(32, FMOD_INIT_NORMAL, 0);
        std::cout << result << std::endl;
        result = system->createStream("singing.wav", FMOD_LOOP_NORMAL |         FMOD_2D, 0, &sound);
        std::cout << result << std::endl;
        sound_to_play = sound;
        result = system->playSound(sound_to_play, 0, false, &channel);
        std::cout << result << std::endl;
        std::cout << "Working" << std::endl;
    }
};

在我的另一个函数中这样创建它

SoundStream soundStream;
soundStream.startStream();

所有内容都连接正确。

感谢

您似乎没有创建系统对象:

System_Create(&system);

此外,您传递给System::playSound的参数无效(我使用的是FMOD 4.44.58-1)。

下面是一个工作示例:

#include "fmod.hpp"
class SoundStream
{
public:
  FMOD::System     *system;
  FMOD::Sound      *sound;
  FMOD::Channel    *channel;
  void startStream()
  {
    System_Create(&system);
    system->init(32, FMOD_INIT_NORMAL, 0);
    system->createStream("singing.wav", FMOD_LOOP_NORMAL | FMOD_2D, 0, &sound);
    system->playSound(FMOD_CHANNEL_REUSE, sound, false, &channel);
  }
};
int main(int argc, char** argv)
{
  SoundStream soundStream;
  soundStream.startStream();
  while(true) {} // ctrl + c to exit
  return 0;
}