iOS 自定义构建填充 AVAudioPCMBuffer

本文部分内容翻译自 Apple 官方开发者论坛中来自Apple开发者的一份声明,Working with AVAudioPCMBuffer

背景

AVAudioBuffer 是苹果最新音频框架 AVFAudio(即 AVFoundation Audio 部分)中最基础的音频缓存帧结构

但是目前该结构仅能在 AVAudioEngine 的整体使用中由 AVAudioFilereadIntoBuffer:frameCount:error: 方法读出,没有自定义构建并填充数据的途径。

因此 Apple 官方开发人员对此做出了回应并给出了一些建议

构建帧结构

一些开发者有问过怎样不通过 AVAudioFile 的读解码方法 readIntoBuffer… 创建 AVAudioPCMBuffer 并填充数据。

AVAudioPCMBufferAVAudioBuffer 在 PCM 格式下的子类。对 Core Audio 有所了解的人会注意到,基本上这些缓存类设计都会把 AudioStreamBasicDescriptionAVAudioFormat中)和 AudioBufferList/AudioBuffer 结构包装进来。

因为在为 AudioBufferList/AudioBuffer(s) 分配内存时,需要知道具体的格式和缓存大小,所以在创建 AVAudioPCMBuffer 实例时,需要指定缓存格式。缓存中可以存储的最大帧数通过只读属性 frameCapacity 限定,它的注释是:“缓存中音频采样帧的容量(只读)”

frameLength 属性表示缓存中当前可用帧数量,这个数量可能会被修改,特别是直接操作底层 AudioBuffers 的时候。这个数量值不能超过缓存容量值。修改这个数量属性时,底层 AudioBuffers 里的 mDataByteSize 字段会相应被更新。

AVAudioPCMBuffer 为访问容器中的音频数据提供了三个属性:

  • floatCh
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值