ios音效播放

作者: 写一本2000000的书 | 来源:发表于2016-12-28 14:44 被阅读1290次

概述:

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

一. 音效限制:

  1. 音频播放时间不能超过30s.
  2. 数据必须是PCM或者IMA4格式.
  3. 音频文件必须打包成.caf、.aif、.wav中的一种.

二. 音效调用:

. 调用如下函数获得系统声音ID。
AudioServicesCreateSystemSoundID(CFURLRef  inFileURL, SystemSoundID*   outSystemSoundID)
. 如果需要监听播放完成操作,则使用如下方法注册回调函数。
AudioServicesAddSystemSoundCompletion(SystemSoundID inSystemSoundID,CFRunLoopRef  inRunLoop, CFStringRef  inRunLoopMode, AudioServicesSystemSoundCompletionProc  inCompletionRoutine, void*  inClientData)
.调用
AudioServicesPlaySystemSound(SystemSoundID inSystemSoundID)
 或者AudioServicesPlayAlertSound(SystemSoundID inSystemSoundID) 
方法播放音效(后者带有震动效果)。
.代码如下
#import "ViewController.h"
// 导入系统框架
#import <AudioToolbox/AudioToolbox.h>

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    UIButton *callButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [callButton setTitle:@"paly" forState:UIControlStateNormal];
    [callButton setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
    callButton.backgroundColor = [UIColor grayColor];
    callButton.center = self.view.center;
    callButton.bounds = CGRectMake(10, 0, self.view.bounds.size.width-10, 44);;
    [self.view addSubview:callButton];
    [callButton addTarget:self action:@selector(playButtonEvent:) forControlEvents:UIControlEventTouchUpInside];
}
- (void)playButtonEvent:(UIButton *)sender {
    NSString *audioFile=[[NSBundle mainBundle] pathForResource:@"sound" ofType:nil];
    NSURL *fileUrl=[NSURL fileURLWithPath:audioFile];
    //1.获得系统声音ID
    SystemSoundID soundID=0;
    /**
     * inFileUrl:音频文件url
     * outSystemSoundID:声音id(此函数会将音效文件加入到系统音频服务中并返回一个长整形ID)
     */
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)(fileUrl), &soundID);
    //如果需要在播放完之后执行某些操作,可以调用如下方法注册一个播放完成回调函数
    AudioServicesAddSystemSoundCompletion(soundID, NULL, NULL, soundCompleteCallback, NULL);
    //2.播放音频
    AudioServicesPlaySystemSound(soundID);//播放音效
    //    AudioServicesPlayAlertSound(soundID);//播放音效并震动
    //3.销毁声音
    AudioServicesDisposeSystemSoundID(soundID);
}
/**
 *  播放完成回调函数
 *
 *  @param soundID    系统声音ID
 *  @param clientData 回调时传递的数据
 */
void soundCompleteCallback(SystemSoundID soundID,void * clientData){
    NSLog(@"播放完成...");
}

相关文章

  • IOS15之音效播放

    IOS15之音效播放

  • 音视频

    音效 1.iOS中音乐可以暂停,音效不能操作;而且音效可以立即播放,加载到本地,而音乐需要缓冲,边下边播.在iOS...

  • iOS音效播放

    当开始播放时压低其他app的声音,播放结束后恢复正常 更详细的文章请看http://www.jianshu.com...

  • ios音效播放

    概述: AudioToolbox.framework是一套基于C语言的框架,使用它来播放音效其本质是将短音频注册到...

  • iOS音频

    iOS中支持的音频播放类型播放音效System Sound Service播放本地音频AVFoundataion播...

  • iOS音频播放

    引言: 在iOS中音频按照播放形式可以分为音效播放和音乐播放。音效主要指的是一些短音频,通常作为点缀音频,如游戏中...

  • iOS学习笔记23-音效与音乐

    一、音频 在iOS中,音频播放从形式上可以分为音效播放和音乐播放。 音效: 主要指一些短音频的播放,这类音频一般不...

  • 系统音频调用(转)

    iOS开发——播放系统音效、自定义音效需求大致分为三种:1.震动2.系统音效(无需提供音频文件)3.自定义音效(需...

  • iOS - 播放音效

    AVFoundation/AVFoundation.h 框架

  • iOS 播放系统音效

    播放系统音效需要使用 AudioToolBox.framework(一套基于 C 语言的框架),其本质是将短音频注...

网友评论

    本文标题:ios音效播放

    本文链接:https://www.haomeiwen.com/subject/sadyvttx.html