// // KSYAQPlayer.h // KSYStreamer // // // Created by pengbin on 10/15/17. // Copyright © 2015 ksyun. All rights reserved. // #import #import "KSYTypeDef.h" /** 基于AudioQueue的音乐播放器 * 提供声音播放的功能 * 通过回调拉取新的数据 * 提供音量和音调调节功能 * 能将播放后的音频数据通过回调送出 (回调的数据为音效处理之后的数据) */ @interface KSYAQPlayer : NSObject #pragma mark - player control /** @abstract 开始播放 @param fmt, 后续送入的音频数据的格式 @return 是否能够开始播放 */ - (BOOL) play:(AudioStreamBasicDescription*)fmt; /** 停止播放背景音乐 */ - (void) stop; /** 暂停播放背景音乐 */ - (void) pause; /** 恢复播放背景音乐 */ - (void) resume; /** @abstract 播放音量 @discussion 调整范围 0.0~1.0, 默认为1 */ @property (nonatomic, assign) double volume; /** @abstract 播放声音的音调 @discussion 调整范围 [-24.0 ~ 24.0], 默认为0.01, 单位为半音 @discussion 0.01 为1度, 1.0为一个半音, 12个半音为1个八度 */ @property (nonatomic, assign) double pitch; /** @abstract 播放速度 @discussion 调整范围 0.5~2.0, 默认为1 */ @property (nonatomic, assign) double playRate; /** @abstract 输入的音频格式 @discussion 每次输入音频格式可能变化时,请重新调用play: 方法 */ @property (nonatomic, readonly) AudioStreamBasicDescription inFmt; /** @abstract 回调输出的音频格式 */ @property (nonatomic, readonly) AudioStreamBasicDescription outFmt; /** @abstract 背景音乐播放静音 @discussion 仅仅静音播放, 不影响回调的音频数据 */ @property (nonatomic, assign) BOOL mute; #pragma mark - callbacks /** @abstract 音频数据输入回调 @discussion buf 送入的音频数据 */ @property(nonatomic, copy) BOOL (^pullDataCB)(AudioQueueBufferRef buf); /** @abstract 音频数据输出回调 @discussion pData 回调输出的数据指针 @discussion len sample数 @discussion fmt 数据的格式 @discussion pts 目前没有时间戳输出 */ @property(nonatomic, copy) BOOL (^putDataCB)(uint8_t** pData, int len, const AudioStreamBasicDescription* fmt, CMTime pts); #pragma mark - player state /** @abstract 音频播放是否运行 @discussion 音频是否输出到speaker播放 */ @property (nonatomic, readonly) BOOL isRunning; /** @abstract 音频播放是否暂停 @discussion 通过 pause/resume 改变状态 */ @property (nonatomic, readonly) BOOL isPaused; /** @abstract  播放错误码 @discussion 播放错误码具体内容可以参考AudioQueue的Apple文档。 */ @property (nonatomic, readonly) OSStatus audioErrorCode; @end