我正在尝试使用OpenAl在c++项目中播放声音。我想播放会循环播放的音乐曲目。当文件是320 kbps的.wav或.mp3时,这工作得很好。但是当尝试以32 kbps播放.mp3时,它不会循环播放。
另一件事是,如果我在使用 .mp3 时将AL_LOOPING标志设置为 true,它将启动 1 秒,然后重新启动轨道。播放 .wav 时,该标志可以正常工作
我的代码是
alGenSources(1, &__alSource);
openAlResult = alGetError();
if (openAlResult != AL_NO_ERROR)
{
return ConvertError(openAlResult);
}
alSourcef (__alSource, AL_PITCH, 1.0);
alSourcef (__alSource, AL_GAIN, 1.0);
alSource3f(__alSource, AL_POSITION, 0.0, 0.0, 0.0);
alSource3f(__alSource, AL_VELOCITY, 0.0, 0.0, 0.0);
alSource3f(__alSource, AL_DIRECTION, 0.0, 0.0, 0.0);
alSourcef(__alSource, AL_ROLLOFF_FACTOR, 0.0);
alSourcei(__alSource, AL_SOURCE_RELATIVE, AL_TRUE);
// only works for WAV
alSourcei(__alSource, AL_LOOPING, AL_TRUE);
openAlResult = alGetError();
if (openAlResult != AL_NO_ERROR)
{
return ConvertError(openAlResult);
}
关于 32 kbps 格式的 .mp3 或它不会循环的方式有什么想法吗?
谢谢