我想知道openAL中是否有一个命令可以用来播放特定时刻(寻道时间)的声音文件。就像我使用滑块并滑动它一样,一旦我释放滑块,声音文件应该从该特定瞬间播放。
我已经为iOS实现了它。但是我没有找到可以从特定时刻播放文件的openAL方法。
alSourcei(sourceID, AL_BUFFER, 0);
alSourcei(sourceID, AL_BUFFER, bufferID);
// Set the pitch and gain of the source
alSourcef(sourceID, AL_PITCH, aPitch);
alSourcef(sourceID, AL_GAIN, aGain * fxVolume);
if(aLoop) {
alSourcei(sourceID, AL_LOOPING, AL_TRUE);
} else {
alSourcei(sourceID, AL_LOOPING, AL_FALSE);
}
// Set the source location
alSource3f(sourceID, AL_POSITION, aLocation.x, aLocation.y, 0.0f);
**Here we play the sound ***
alSourcePlay(sourceID);
执行上述代码始终从初始位置播放音轨。 我想知道在openAL中是否有任何方法可以在某个特定时刻寻找赛道。
答案 0 :(得分:1)
你需要实施寻求。根据你想要的准确程度(即到最近的帧或在帧边界之间寻找),这可能非常棘手。
如何实现这取决于声音数据的表示方式。我之前已经实现了这个用于在openal上使用ogg vorbis数据进行流式传输。为此,我使用实现的ov_seek作为ov_open_callbacks的一部分。
在devmaster上有一个关于OpenAL流的教程,我发现它很有用。