我想知道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中是否有任何方法可以从某个特定的时间点开始寻找音轨。
最佳答案
您需要实现寻求。根据您想要的搜索精确度(即到最近的帧或帧边界之间的搜索)来做,可能会非常棘手。
如何执行此操作取决于声音数据的表示方式。我以前已经实现了此功能,以便在Openal上使用ogg vorbis数据进行流式传输。为此,我使用了已实现的ov_seek作为ov_open_callbacks的一部分。
我发现有一个关于devmaster的OpenAL流的教程,我认为它很有用。