audioqueue没有声音,添加静音包

本文详细探讨了iOS中使用AudioQueueRef播放音频的底层机制,包括停止、暂停的不同状态及缓冲区管理等问题,并分享了作者从2012年至2016年间在解决AudioQueue播放不稳定问题上的经验心得。

2012年状态:

ios中用AudioQueueRef播放音频,是比较底层的方法。已经接触了很长时间了,不过一直没有弄太明白。

今天沉下心来做了些测试,总结一下:
1、调用AudioQueueStop(queue, true);停止播放器,系统会自动调用三次回调函数,kAudioQueueProperty_IsRunning状态为停止状态

2、调用AudioQueuePause(queue);暂停播放器,kAudioQueueProperty_IsRunning状态为非停止状态

3、当三个缓冲区播放完成时候,没有更多的数据往里面添加,播放器会停止播放(一种特殊的等待状态,不再继续回调),

这时候调用AudioQueueStart(queue,NULL);是无效的,不会继续调用回调函数,而是应该再往缓冲区里面添加数据,播放器会自动继续播放。

2018年:

    有兄弟评论github上没有源码只有.a静态库,是有一些原因的,不过现在没什么问题了,源码已经放上去了。

    记得14、15、16年的时候还在搞跟这块相关的东西,不过因为一直没解决这个问题,所以那时候用的是更底层的AudioUnit,不会出现忽然就没声音的问题,但是也有一个很严重的问题没解决,就是要用while死循环一直检测音频包队列,占用cpu非常高。

     然后心里就留下疙瘩,一直记着这个事情,时不时的去瞟几眼代码,前前后后心里憋了5年多,后来接触的C++方面的知识更多了,忽然就有一种很想再试一试的冲动,然后在16年底某个夜黑风高的晚上坐在公司里,旁边的同事也都走完了,安安静静的~~就灵光一现搞出来了。

github地址:https://github.com/cxm19881208/AudioQueue

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值