gpt4 book ai didi

ios - AVAudioEngine 跟踪音频的进度

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:02:58 31 4
gpt4 key购买 nike

我已经设置了我的音频引擎并连接了几个节点,以便制作如下所示的音频图:

//
//AVAudioPlayerNode --> AVAudioMixerNode --> AVAudioUnitVarispeed ---> AvAudioOutputNode
// | |
// AVAudioPCMBuffer AudioTap
//

一切正常,音频引擎正在运行。现在我想获取 AVAudioPlayerNode/AVAudioPCMBuffer 的 framePosition(进度,消耗的帧数,%),以便更新我的 UI 中的当前位置。像这样的东西:

[timeEffectNode installTapOnBus:0 bufferSize:4096 format:[timeEffectNode outputFormatForBus:0] block:^(AVAudioPCMBuffer *buffer, AVAudioTime *when) {
//calculate the current node progress here. ???
}];

我确定必须有一种方法可以做到这一点,但我似乎找不到任何关于如何实现这一点的文档?

如有任何想法,我们将不胜感激。

最佳答案

我最近创建了一个与 AVAudioEngine 和 AVPCMBufferNode 配合使用的播放器。玩家保留玩家已经玩过的总时间的内部时间。要访问它,您必须获取播放器的 lastRenderTime,然后使用 (sampleTime/sampleRate)。这应该以秒为单位返回玩家玩游戏的总时间。

如果您想重置播放器计时器(例如当您搜索文件或切换到新歌曲时),您必须使用播放器的 playAtTime 方法进行设置。 playAtTime 不执行任何文件搜索,它只是修改播放器内部计时器,然后开始播放。

希望对您有所帮助。

如果您想引用我是如何使用它的,请查看我的项目:https://github.com/danielmj/AEAudioPlayer

关于ios - AVAudioEngine 跟踪音频的进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26928309/

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