如何将代码回调同步到音轨的播放时间?

时间:2012-11-15 13:40:09

标签: ios synchronization core-audio avaudioplayer openal

我在iPhone应用程序中播放演示音轨,我想在特定的播放时间显示特定的交互式“幻灯片”。我无法使用视频的原因是幻灯片是互动的(不仅仅是照片)。

开发人员最近表示,您不能相信开始播放音轨然后显示由计时器触发的内容。轨道越长,计时器就会熄火,因为媒体播放的实际播放长度会有所不同。

我是否可以收到诸如“到达比赛时间X:Y”的回叫或者每次播放的回调?

1 个答案:

答案 0 :(得分:2)

AudioUnit有一个回调属性,你可以设置你在AURenderCallbackStruct中传递的属性。 该回调将有一个时间戳。

OSStatus YourAURenderCallack (
   void                        *inRefCon,
   AudioUnitRenderActionFlags  *ioActionFlags,
   const AudioTimeStamp        *inTimeStamp,
   UInt32                      inBusNumber,
   UInt32                      inNumberFrames,
   AudioBufferList             *ioData
);