我是ObjectAL的新手。我用它来播放改变音高的mp3。
我无法弄清楚如何在ObjectAL中“正确”播放加载的缓冲区。当我拨打[source play:buffer]
时,声音只有一秒钟。为了不断“播放”缓冲区,我可以将其嵌入无限循环中,然后正确播放缓冲区。我想我错过了一些基本观点,你能指出我正确的方向吗?
我的代码:
[OALSimpleAudio sharedInstance].reservedSources = 0;
ALSource *source = [ALSource source];
ALBuffer *buffer = [[OpenALManager sharedInstance] bufferFromFile:@"video.mp3" reduceToMono:YES];
source.pitch = 1;
for (;;) { // infinite loop because otherwise only a millisecond of buffer is played
[source play:buffer];
}
答案 0 :(得分:0)
调用pitchTo
或类似函数实际上会使缓冲区不断播放,fx:
[source pitchTo:1 duration:1 target:nil selector:nil];
这不是一个完美的解释,但至少它解决了这个问题。