您的位置:首页 > 移动开发 > IOS开发

IOS开发音频播放之System Sound services

2015-12-13 09:25 381 查看
使用 System Sound Services 方式适合播放一些很小的提示或警告音频,它存在如下限制。

1,声音长度不能超过30秒

2,声音文件必须是PCM或IMA4(IMA4/ADPCM)格式。

3,打包成caf,aif或.wav的文件。

4,不能控制播放的进度。

5,调用方法后立即播放声音。

6,没有循环播放和立体控制。

除此之外,使用System Sound SerVices播放音频时调用系统的震动功能;可以为
AudioServicesAddSystemSoundCompletion()
函数增加CallBack函数来支持循环播放。

使用System Sound Services播放音频的步骤如下。

1,调用
AudioServicesCreateSystemSoundID(CFURLRef inFileURL,SystemSoundID *outSystemSoundID)
函数注册音频文件,该函数的第一个参数代表音频文件的URL(可通过NSURL转换为CFURLRef),第二个参数代表注册该音频文件的SystemSoundID。

2,如果需要在音频播放完成后执行某些操作,则可调用
AudioServicesAddSystemSoundCompletion()
函数为指定SystemSoundID指定Callback函数。

3,当需要播放音频时,调用
AudioServicesPlaySystemsound()
函数或
AudioServicesPlayAlertSound()
函数——其中后一个函数播放音频时会调用系统的震动功能。

代码如下:

//
//  FKViewController.m
//  SystemSoundTest
//
//  Created by yeeku on 13-8-7.
//  Copyright (c) 2013年 crazyit.org. All rights reserved.
//

#import <AudioToolbox/AudioToolbox.h>
#import "FKViewController.h"

static void completionCallback(SystemSoundID mySSID)
{
// Play again after sound play completion
//  AudioServicesPlaySystemSound(mySSID);
NSLog(@"completed");

}
@implementation FKViewController
SystemSoundID crash;
- (void)viewDidLoad
{
[super viewDidLoad];
// 定义要播放的音频文件的URL
NSURL* crashUrl = [[NSBundle mainBundle]
URLForResource:@"crash" withExtension:@"wav"];
// 加载音效文件
AudioServicesCreateSystemSoundID((__bridge CFURLRef)crashUrl , &crash);
// 为crash播放完成绑定回调函数
AudioServicesAddSystemSoundCompletion(crash, NULL, NULL,
(void*)completionCallback ,NULL);
}
- (IBAction)play:(id)sender {
//  // 播放crash代表的音频
//  AudioServicesPlaySystemSound(crash);
// 播放crash代表的音频,并控制设备震动
AudioServicesPlayAlertSound(crash);
}
@end


由于使用System Sound Services 播放音频需要AudioToolbox框架的支持,因此需要为该应用添加AudioToolbox框架。除此之外,还应该在该视图控制器类的第一行使用
#import<AudioToolbox/AudioToolbox.h>
导入AudioToolbox的头文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  音频 ios