首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在AVAudioPCMBuffer上做偏移?

如何在AVAudioPCMBuffer上做偏移?
EN

Stack Overflow用户
提问于 2021-10-27 10:59:51
回答 1查看 65关注 0票数 0

我有AVAudioPCMBuffer,我将其设置为AVAudioPlayerNode的源

代码语言:javascript
复制
    internal func play() {
        guard let buf = pcmBuf else {
            logger?.log(severity: .error, msg: "Sound pcmBuf is nil.")
            return
        }
        
        if !isPlaying {
            player.scheduleBuffer(buf, at: nil, options: .loops)
            player.play()
        }
    }

用户可能会向前寻找,为了做到这一点,我需要偏移缓冲区并再次设置它,如下所示

代码语言:javascript
复制
    internal func play() {
        guard let buf = pcmBuf else {
            logger?.log(severity: .error, msg: "Sound pcmBuf is nil.")
            return
        }

        buf.offset = 10 // Eg: in sec        

        if !isPlaying {
            player.scheduleBuffer(buf, at: nil, options: .loops)
            player.play()
        }
    }

因此,它看起来像是我设置了一个新的缓冲区,但是有了所需的偏移量,回放将从所需的点开始。

问题是没有offset方法...

该怎么做呢?

EN

回答 1

Stack Overflow用户

发布于 2021-11-02 22:31:22

我不认为你需要补偿缓冲区。您应该向您的play函数传递一个有效的第二个参数,而不是nil。

https://developer.apple.com/documentation/avfaudio/avaudioplayernode/1388422-schedulebuffer

“按照您指定的时间和播放选项安排音频缓冲区中的播放样本。”

所以传入一个有效的AVAudioTime。

https://developer.apple.com/documentation/avfaudio/avaudioplayernode#1669195

代码语言:javascript
复制
init(sampleTime: AVAudioFramePosition, 
atRate sampleRate: Double)

我猜这可能就是你想要的初始化器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69737425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档