AudioQueue来实现音频播放功能时最主要的步骤
来源:互联网 发布:开学啦软件多少钱 编辑:程序博客网 时间:2024/06/05 18:12
AudioQueue是Mac OS X与iPhone中提供录音、播放功能的高级框架,比AudioUnit等框架更方便,而且不要求掌握更多专门的知识。
从AudioQueue的名称就可以看出,AudioQueue框架以队列的形式处理音频数据。因此使用时需要给队列分配缓存空间,由回调(Callback)函数完成向队列缓存读写音频数据的功能。另外,AudioQueue是AudioToolbox框架的一部分,使用前需要将AudioToolbox框架导入进来。
使用AudioQueue来实现音频播放功能时最主要的步骤,可以更简练的归纳如下。
1.
2.
3.
4.
5.
6.
以下是贯彻上述六个主要步骤的代码实例,只需要向[play:]中传入音频文件的路径就可以开始音频播放。稍加修改可以直接应用到自己的程序中。
Source
#import <Foundation/Foundation.h>
#import <AudioToolbox/AudioToolbox.h>
#import <AudioToolbox/AudioFile.h>
#define NUM_BUFFERS 3
@interface AudioPlayer : NSObject {
}
//定义队列为实例属性
@property AudioQueueRef queue;
//播放方法定义
- (void) play:(CFURLRef) path;
//定义缓存数据读取方法
- (void) audioQueueOutputWithQueu
//定义回调(Callback)函数
static void BufferCallback(void *inUserData, AudioQueueRef inAQ,
//定义包数据的读取方法
- (UInt32)readPacketsIntoBuffer:(AudioQueueBufferRef)buffer;
@end
Source Audioplay.m
static UInt32 gBufferSizeBytes = 0x10000;
@implementation AudioPlayer
@synthesize queue;
//
static void BufferCallback(void *inUserData, AudioQueueRef inAQ,
}
//初始化方法(为NSObject中定义的初始化方法)
- (id) init {
}
//缓存数据读取方法的实现
- (void) audioQueueOutputWithQueu
}
//音频播放方法的实现
-(void) play:(CFURLRef) path {
}
- (UInt32)readPacketsIntoBuffer:(AudioQueueBufferRef)buffer {
}
@end
- AudioQueue来实现音频播放功能时最主要的步骤
- AudioQueue来实现音频播放功能时最主要的步骤
- 在iphone中使用AudioQueue来实现音频播放功能时最主要的步骤
- iOS音频播放之AudioQueue(三):网络流媒体的播放
- iOS音频播放之AudioQueue(终结篇):缓存系统的实现
- iOS音频播放 (五):AudioQueue
- iOS音频播放 (五):AudioQueue
- iOS音频播放 (五):AudioQueue
- iOS音频播放 (五):AudioQueue
- iOS音频播放 (五):AudioQueue
- iOS音频播放之AudioQueue(二):本地音乐的时长,进度和Seek
- ios开发之使用AudioQueue进行音频的播放
- 通过脚本来实现音频的播放
- iOS音频播放 (五):AudioQueue 转
- iOS音频播放 (五):AudioQueue 转
- 音频队列Audioqueue播放pcm文件
- iOS音频播放之AudioQueue(一):播放本地音乐
- AudioQueue 音频队列实现录音和播音
- ==和equals的区别
- 采用spring AOP 和注解解决日志
- JAVA常用类———StringBuffer类
- Grails级联下拉框的实现
- USB无线网卡驱动移植(1)
- AudioQueue来实现音频播放功能时最主要的步骤
- 导致机接口出现err-disable的几个常见原因:
- linux tar命令使用详解
- delphi服务程序(service)的调试方法
- EOF 与 BOF 之分
- java nio socketChannel read
- Hibernate Annotation -- (JPA)
- 通过网络使用ADB ( Connect to android with ADB over TCP )
- Building V8