基于AudioQueue实现音频的录制和播放(标贝科技)

本文详细介绍了如何在iOS中使用AudioQueue实现音频的录制和播放。AudioQueue是苹果官方的音频处理框架,适用于播放或录制音频,支持PCM数据。文章涵盖了AudioQueue的架构、AudioQueueBuffer数据结构、创建与释放、音频录制和播放的流程,以及Audio Queue的控制和状态监控。同时提供了基于AudioQueue的录音器和播放器的源代码链接。
摘要由CSDN通过智能技术生成

标贝科技 https://ai.data-baker.com/#/?source=qwer12

填写邀请码fwwqgs,每日免费调用量还可以翻倍
在这里插入图片描述
在这里插入图片描述

基于AudioQueue实现音频的录制和播放

背景

在iOS中常使用AVPlayerAVAudioPlayer来播放在线音乐或者本地音乐,但是支持的格式都是封装好的,比如Mp3,Wav 格式的音频,但是如果需要播放流式的PCM音频数据该怎么办呢? 答案是使用Audio Queue,它也是苹果官方封装的音频处理框架,可以用来播放或录制音频,并且支持平台级音频格式的编码和解码。

AudioQueue 有以下作用

  1. 连接设备的音频硬件
  2. 管理音频播放的内存数据
  3. 协作codec 进行音频的的编解码
  4. 实现音频的录制和播放

本篇文章主要以PCM 数据为例子进行讲解,讲解音频的录制和实现,文末会附带基于AudioQueue的录音器和播放起的源代码文件;

总览

本篇主要介绍来音频的录制和播放过程,共包含三个部分,Audio Queue 架构、音频的录制、和音频的播放,其中Audio Queue 架构是实现录制和播放的核心,理解了AudioQueue的实现原理,再来看录制和播放将会更加高效率;

Audio Queue 架构

Audio Queue 架包含三个部分: audio queue buffers, Buffer queueaudio queue callback; audio queue buffers 在结构上是一个数组结构,存储的AudioBuffer数据,下面会专门分析AudioQueueBuffer 的数据结构; Buffer queue 可以理解为管理类,用来管理和组织这些audio queue buffers 按照一定的顺序进行排列和运行, 并且协调audio queue callback 的调用;

在这里插入图片描述

AudioQueueBuffer数据结构

下面重点来说明AudioQueueBuffer的数据结构的数据结构如下,主要包含四个部分,其中最核心的是aAduioData 部分。

typedef struct AudioQueueBuffer {
    const UInt32   mAudioDataBytesCapacity;
    void *const    mAudioData;
    UInt32         mAudioDataByteSize;
    void           *mUserData;
} AudioQueueBuffer;
typedef AudioQueueBuffer *AudioQueueBufferRef;

mAudioData, 它代表要录制和播放的音频数据;
mAudioDataByteSize: 用来表示audioDatalength;
mAudioDataBytesCapacity: 表示一个mAudioData 需要分配的空间,单位是字节(Byte),它的值必须大于mAudioDataByteSize,否则音频的数据放不下会出现丢失;
mUserData

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值