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