首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在内存中为AVAudioPlayer initWithData生成LPCM缓冲区

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

Stack Overflow用户
提问于 2010-03-28 15:46:17
回答 3查看 2K关注 0票数 6

我想以编程方式生成一个声波,并用AVAudioPlayer播放它。我有代码来编码我的波形为线性PCM,44100 the,单声道,每个样本8位。

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

EN

回答 3

Stack Overflow用户

发布于 2010-04-01 04:39:03

PCM只是模拟音频信号的数字表示。不幸的是,它没有封装任何关于音频通道、位深度或采样率的元数据-所有这些都是正确读取PCM数据所必需的。我假设只要能够在AVAudioPlayer对象中手动设置这些变量,AVAudioPlayer就会接受包装在NSData对象中的PCM数据。不幸的是,这些变量是只读的,所以即使文档说AVAudioPlayer可以处理Core Audio可以处理的任何东西,它也没有办法处理原始的LPCM数据。

正如zoul所说的,我认为最简单的方法就是抛出WAV头,因为头会通知AVPlayer上面需要的变量。它有44个字节,很容易模拟,并且定义得很好-我使用上面给出的相同的definition来实现wav报头编码和解码。而且,它只是放在未修改的LPCM数据的前面。

票数 5
EN

Stack Overflow用户

发布于 2010-03-28 16:52:40

也许添加一个WAV header会有所帮助?

票数 4
EN

Stack Overflow用户

发布于 2019-05-17 05:06:32

我发布了一个Swift 5示例(作为GitHub要点),该示例将音频浮动样本的缓冲区转换为内存中的WAV文件,以便与AVAudioPlayer initWithData一起使用,此处:https://gist.github.com/hotpaw2/4eb1ca16c138178113816e78b14dde8b

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

https://stackoverflow.com/questions/2532232

复制
相关文章

相似问题

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