gpt4 book ai didi

ios - 如何确定 ScheduledAudioFileRegion 何时播放完毕?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:22:57 26 4
gpt4 key购买 nike

在 iOS 上,我有一个类型为 kAudioUnitSubType_AudioFilePlayer 的音频单元,由 AUNode 封装并连接到音频图中的多 channel 混音器和远程 IO(输出)。

当图表正在播放时,我想循环播放文件并能够确定 AudioFilePlayer 何时到达文件末尾,以便我可以在它开始下一次循环迭代之前执行操作。

在查看 AudioUnitProperties.h 时,虽然有一个完成回调 - mCompletionProc - 它仅在磁盘读取文件并安排播放时调用,而不是在实际完成播放时调用音频。

然后我考虑将音频(数据包/帧)的长度存储为一个属性,并在附加到混音器另一个输入的输入回调中检查我们是否在文件末尾。但是该回调不会在每一帧都被调用,所以我很可能会错过文件的实际结尾。

我该如何处理?

最佳答案

请设置ScheduledAudioFileRegion.mCompletionProc,

//

ScheduledAudioFileRegion playRegion;
playRegion.mTimeStamp.mFlags = kAudioTimeStampSampleTimeValid;
playRegion.mTimeStamp.mSampleTime = 0;
playRegion.mCompletionProc = XXXXXXXXXXXXXXXX(you proc);
playRegion.mCompletionProcUserData = NULL;
playRegion.mAudioFile = mAudioFile;
playRegion.mLoopCount = 0;
playRegion.mStartFrame = mStartSampleFrame;
playRegion.mFramesToPlay = UInt32(-1);

err = AudioUnitSetProperty(mFilePlayerAU, kAudioUnitProperty_ScheduledFileRegion,
kAudioUnitScope_Global, 0, &playRegion, sizeof(playRegion));

关于ios - 如何确定 ScheduledAudioFileRegion 何时播放完毕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14545051/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com