gpt4 book ai didi

ios - 如何使用 `AVCapturesession` 中的 `didOutputSampleBuffer` 播放音频缓冲区

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:46:42 29 4
gpt4 key购买 nike

我一直在尝试播放在 didOutputSampleBuffer 委托(delegate)中作为原始数据接收的音频。处理原始数据的正确方法应该是什么?

最佳答案

查看以下来自 Apple 的示例代码:AVCaptureTtoAudioUnitOSX

在那里您可以看到如何正确处理原始音频数据并将其传递给 AudioUnit

基本原理如下:

  1. 获取 SampleBufferAudioStreamBasicDescription 以获取有关格式的信息

    首先使用CMSampleBufferGetFormatDescription获取CMFormatDescriptionRef
    然后使用 CMAudioFormatDescriptionGetStreamBasicDescription 获取 AudioStreamBasicDescription
    现在您可以获得有关采样率、每 channel 位数、每帧 channel 数和每数据包帧数的信息

  2. 获取带有实际音频数据的AudioBufferList

    要么使用 CoreAudio 的公共(public)实用程序,要么检查这个 mailing list输入正确的方法
    该函数称为 CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer。第三个参数是 bufferListOut,它是您想要的 AudioBufferList 并将传递给例如AudioUnit 或您需要的任何东西。

  3. 获取实际的原始数据

    AudioBufferList 包含AudioBuffers,每个包含数据

    struct AudioBuffer {
    UInt32 mNumberChannels;
    UInt32 mDataByteSize;
    void *mData;
    };

这应该让你继续。查看来自 Apple 的示例代码以获取更多信息。

关于ios - 如何使用 `AVCapturesession` 中的 `didOutputSampleBuffer` 播放音频缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13814943/

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