使用Audio Queue Services 播放和录制音频
来源:互联网 发布:返利网站源码 编辑:程序博客网 时间:2024/06/06 11:01
在使用之前,我们需要了解AudioQueue Service的基本工作原理。
图1一个录音音频队列(Recording Audio Queue)
由上图可以得知,一个Recording Audio Queue,包括Buffer(缓冲器)组成的Buffer Queue(缓冲队列),以及一个Callback(回调)。他们之间是如何工作的呢?
图2 录音流程
1. 将音频填入第一个缓冲器中
2. 当队列中的第一个缓冲器填满时,会自动填充下一个缓冲器。此时,会触发回调。
3. 在回调函数中需要将音频数据流写入磁盘
4. 然后,需要在回调函数中将该缓冲器重新放入缓冲队列,以便重复使用该缓冲器。重复步骤2。
在了解录音的流程之后,让我们来看看播放基本体系结构。
图3 一个播放音频队列(A playback audio queue)
由上图可以得知,其结构和录音音频队列基本一致,只是回调触发的时机不同,工作流程略有差异。
图4 播放流程
1. 将音频读入到缓存器中。一旦填充满一个缓存器,就会进入缓存队列,此时处于待命状态。
2. 应用程序命令发出指令,要求音频队列开始播放。
3. 音频会从第一个缓存器中取数据,并开始播放。
4. 一旦播放完成,就会触发回调,并开始播放下一个缓存器中的内容。
5. 回调中需要给该缓存器取后面的音频数据,然后重新放入缓存队列中。重复步骤3。
至此,Audio QueueServices的基本原理就算介绍完了。在实际的应用中,还需要处理好各种状态,以及异常情况,例如播放中断、没有录音设备等。关于Audio File Services 的使用,我这里就不做介绍了,详细参考源码。
与本文配套的源代码示例:http://download.csdn.net/detail/midfar/4044390
参考资料:
Audio Queue Services Programming Guide
https://developer.apple.com/library/ios/#documentation/MusicAudio/Conceptual/AudioQueueProgrammingGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40005343
Audio Queue Services Reference
https://developer.apple.com/library/ios/#documentation/MusicAudio/Reference/AudioQueueReference/Reference/reference.html#//apple_ref/doc/uid/TP40005117
Audio File Services Reference
https://developer.apple.com/library/ios/#documentation/MusicAudio/Reference/AudioFileConvertRef/Reference/reference.html#//apple_ref/doc/uid/TP40006072
- 使用Audio Queue Services 播放和录制音频
- [iOS]使用Audio Queue Services 播放和录制音频
- 使用Audio Queue Services 播放和录制音频
- 使用Audio Queue Services 播放和录制音频
- 使用Audio Queue Services 播放和录制音频
- 使用Audio Queue Services 播放和录制音频
- [iOS]使用Audio Queue Services 播放和录制音频
- iOS使用Audio Queue Services 播放和录制音频
- 使用Audio Queue Services 播放和录制音频
- [iOS]使用Audio Queue Services 播放和录制音频
- 使用Audio Queue Services 播放和录制音频
- [iOS]使用Audio Queue Services 播放和录制音频
- 使用Audio Queue Services 播放和录制音频
- [iOS]使用Audio Queue Services 播放和录制音频
- 使用Audio Queue Services 播放和录制音频
- [iOS]使用Audio Queue Services 播放和录制音频
- [iOS]使用Audio Queue Services 播放和录制音频
- [iOS]使用Audio Queue Services 播放和录制音频
- cocos2d-x中使用DebugDraw提高box2d开发效率
- php中strtr和str_replace的坑
- PHP自学之路----面向对象的编程(类与对象)
- 分布式缓存-Memcached
- Asp.Net 中ZedGraph的应用!
- 使用Audio Queue Services 播放和录制音频
- IPv4和ipv6
- 数组列表ArrayList中存储键值对的读取
- U盘安装Mac OS X 10.8.3 - OS X 10.9
- 栈的总结
- Mybatis3.2.1使用例二:Mapper方式集成Spring、注解提供SQL
- 提交App 教程
- 9周项目一
- wordpress使用pre标签来显示你的HTML