Audio Queue 音频处理

Audio Queue来实时录音,边录音边转码,它是AudioToolbox库里的,用于在线流媒体音乐的播放。


一个音频服务队列Audio Queue有三部分组成:


三个缓冲器Buffers:一组音频队列缓冲区(audio queue buffers),每个缓冲器都是一个存储音频数据的临时仓库。



一个缓冲队列Buffer Queue:一个包含音频缓冲器的有序队列。


一个回调Callback:一个自定义的队列回调函数。


声音通过输入设备进入缓冲队列中,首先填充第一个缓冲器;当第一个缓冲器填充满之后自动填充下一个缓冲器,同时会调用回调函数;在回调函数中需要将缓冲器中的音频数据写入磁盘,同时将缓冲器放回到缓冲队列中以便重用。




但是在音频播放缓冲队列中,回调函数调用的时机不同于音频录制缓冲队列,流程刚好相反。将音频读取到缓冲器中,一旦一个缓冲器填充满之后就放到缓冲队列中,然后继续填充其他缓冲器;当开始播放时,则从第一个缓冲器中读取音频进行播放;一旦播放完之后就会触发回调函数,开始播放下一个缓冲器中的音频,同时填充第一个缓冲器放;填充满之后再次放回到缓冲队列。


1.AudioFileStreamID            文件流

2.AudioQueueRef                    播放队列

3.AudioStreamBasicDescription  格式化音频数据

4.AudioQueueBufferRef            数据缓冲


4.AudioQueueAllocateBuffer(queue, [data length], &buffer);

创建音频缓冲数据AudioQueueBufferRef

        

5.AudioQueueEnqueueBuffer(queue, buffer, num_packets, packet_descriptions);

把缓冲数据排队加入到AudioQueueRef等待播放

        

6.AudioQueueStart(audio_queue,nil);    播放

7.AudioQueueStop(audio_queue,true);  停止

   AudioQueuePause(audio_queue);        暂停












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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值