gpt4 book ai didi

iphone - 在内存中为 AVAudioPlayer initWithData 生成 LPCM 缓冲区

转载 作者:行者123 更新时间:2023-12-03 18:43:49 25 4
gpt4 key购买 nike

我想以编程方式生成声波并使用 AVAudioPlayer 播放它。我有代码将波形编码为线性 PCM、44100Hz、单声道、每个样本 8 位。

我不清楚我需要用什么样的信封来包裹这个缓冲区,以便 AVAudioPlayer 将其识别为 PCM。

最佳答案

PCM 只是模拟音频信号的数字表示。不幸的是,它没有封装任何有关音频的元数据 - channel 、位深度或采样率 - 所有这些都是正确读取所述 PCM 数据所必需的。我假设 AVAudioPlayer 会接受封装在 NSData 对象中的 PCM 数据,只要您能够在 AVAudioPlayer 对象中手动设置这些变量。不幸的是,这些变量是只读的,因此尽管文档说 AVAudioPlayer 可以处理 Core Audio 可以处理的任何内容,但它无法处理原始 LPCM 数据。

正如 zoul 所说,我认为最简单的方法是放入 WAV header ,因为 header 告知 AVPlayer 上述必要的变量。它有 44 个字节,很容易模拟,并且定义得很好 - 我使用了相同的 definition上面给出了实现wav头编码和解码的方法。此外,它只是添加到未修改的 LPCM 数据之前。

关于iphone - 在内存中为 AVAudioPlayer initWithData 生成 LPCM 缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2532232/

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