音效播放小demo


音效

AudioToolbox.framework是一套基于C语言的框架,使用它来播放音效其本质是将短音频注册到系统声音服务(System Sound Service)。System Sound Service是一种简单、底层的声音播放服务,但是它本身也存在着一些限制:

  • 音频播放时间不能超过30s 
  • 数据必须是PCM或者IMA4格式 
  • 音频文件必须打包成.caf、.aif、.wav中的一种(注意这是官方文档的说法,实际测试发现一些.mp3也可以播放)

使用System Sound Service 播放音效的步骤如下:

  1. 调用AudioServicesCreateSystemSoundID(   CFURLRef  inFileURL, SystemSoundID*   outSystemSoundID)函数获得系统声音ID。 
  2. 如果需要监听播放完成操作,则使用AudioServicesAddSystemSoundCompletion(  SystemSoundID inSystemSoundID,
    CFRunLoopRef  inRunLoop, CFStringRef  inRunLoopMode, AudioServicesSystemSoundCompletionProc  inCompletionRoutine, void*  inClientData)
    方法注册回调函数。 
  3. 调用AudioServicesPlaySystemSound(SystemSoundID inSystemSoundID) 或者AudioServicesPlayAlertSound(SystemSoundID inSystemSoundID) 方法播放音效(后者带有震动效果)。



#import "ViewController.h"

#import <AudioToolbox/AudioToolbox.h>

@interface ViewController ()


@end


@implementation ViewController

- (IBAction)star1:(UIButton *)sender {

    

    [self star];

}


- (void)viewDidLoad {

    [super viewDidLoad];

    

    


    // Do any additional setup after loading the view, typically from a nib.

//    UIPresentationController

//    /Users/waqing/Desktop/Text/Text/ViewController.m:9:9: In file included from /Users/waqing/Desktop/Text/Text/ViewController.m:9:/Users/waqing/Desktop/Text/Text/ViewController.h:9:9: Could not build module 'UIKit'

}


void soundCompleteCallback(SystemSoundID soundID,void * clientData){

    NSLog(@"播放完成...");

}


- (void)star{

    NSString *strPath = [[NSBundle mainBundle] pathForResource:@"atext.mp3" ofType:nil];

    NSURL *url = [NSURL fileURLWithPath:strPath];

    SystemSoundID soundID = 0;

    AudioServicesCreateSystemSoundID((__bridge CFURLRef)(url), &soundID);

    AudioServicesAddSystemSoundCompletion(soundID, NULL, NULL, soundCompleteCallback, NULL);

    AudioServicesPlayAlertSound(soundID);

//    AudioServicesPlaySystemSound(soundID);

}


- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


@end



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

c897034809

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值