美文网首页
播放音效

播放音效

作者: lcc小莫 | 来源:发表于2018-05-08 19:22 被阅读0次

播放本地音效有很多种方式,这里简单介绍两种,分别是AVAudioPlayer和System Sound Services播放系统的音效。这里简单的把这两种方式封装在了一起。

创建一个AutioTool工具类

AutioTool.h
#import <Foundation/Foundation.h>

@interface AutioTool : NSObject

/* 播放音效 */
+ (void)playRecoding:(NSString *)recodName;

/* 播放音效 */
+ (void)playMusic:(NSString *)musicName;

/* 暂停音效 */
+ (void)pausePlayMusic:(NSString *)musicName;

/* 停止音效 */
+ (void)stopPlayMusic:(NSString *)musicName;

@end
AutioTool.m
#import "AutioTool.h"
#import <AVFoundation/AVFoundation.h>
@implementation AutioTool

static NSMutableDictionary *_soundIDs;
static NSMutableDictionary *_players;

+ (void)initialize
{
    _players = [NSMutableDictionary dictionary];
}

_players是一个可变字典,存放播放器的,目的是为了避免存在多个播放器,而导致创建多个播放器,而使用这一个字典,就可以只创建一个播放器了。

一: AVAudioPlayer播放
播放音乐
+ (void)playMusic:(NSString *)musicName{

    // 1.定义播放器
    NSError *error = nil;
    AVAudioPlayer *audioPlayer = nil;
    audioPlayer = _players[musicName];

    if (audioPlayer == nil) {
    
        // 2.1 获取音效资源
        NSURL *url = [[NSBundle mainBundle] URLForResource:musicName withExtension:nil];
        if (url == nil) return;

        // 2.2 创建音效播放器
        audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
    
        // 2.3 将audioPlayer存入字典
        [_players setValue:audioPlayer forKey:musicName];
    
        // 2.4 准备播放
        [audioPlayer prepareToPlay];
    }
    // 3.播放
    [audioPlayer play];
}
暂停音效
+ (void)pausePlayMusic:(NSString *)musicName{

    // 1. 取出对应播放器
    AVAudioPlayer *audioPlayer = _players[musicName];

    // 2.判断播放器是否存在
    if (audioPlayer) {
        [audioPlayer pause];
    }
}
停止音乐
+ (void)stopPlayMusic:(NSString *)musicName{
    // 1. 取出对应播放器
    AVAudioPlayer *audioPlayer = _players[musicName];

    // 2.判断播放器是否存在
    if (audioPlayer) {
        [audioPlayer stop];
        [_players removeObjectForKey:musicName];
        audioPlayer = nil;
    }
}
二:System Sound Services播放系统的音效
+ (void)playRecoding:(NSString *)recodName{

    SystemSoundID soundID = 0;

    soundID = [_soundIDs[recodName] unsignedIntValue];

    if (soundID == 0) {
    
        CFURLRef url = (__bridge CFURLRef)[[NSBundle mainBundle] URLForResource:recodName withExtension:nil];
    
        AudioServicesCreateSystemSoundID(url, &soundID);
    
        [_soundIDs setObject:@(soundID) forKey:recodName];
    
    }
    AudioServicesPlaySystemSound(soundID);

}

相关文章

  • iOS开始之制作音乐播放器

    一、音频播放与音效播放的基础知识 音效播放 1、音效播放《1》功能介绍用于播放比较短小的音效 常用作系统的提示音...

  • 如何在C语言函数中使用self调用OC的方法

    如题,昨天在做音效播放,顺便吧音效播放的代码记录一下,音效播放的代码如下: 如上在上面音效播放回调的函数里面我需要...

  • 音效 音乐

    播放音效 音效工具类 音乐

  • 音乐播放

    日常开发中所用到的音乐播放 ,除了音乐播放器之外就是音效的播放: 音效播放 音乐播放 音乐播放指的是用音乐播放框架...

  • 音效播放

    一、前言 简单来说,音频可以分为两种: 音效:又称“短音频”,通常在程序中的播放时长为1~2秒,在应用程序中起到点...

  • iOS App内短音效设置

    一. 系统音效(短音效播放)AudioToolbox framework使用AudioToolbox framew...

  • UI(三十七)音效、音频、录音

    *1、播放 (1)音效播放 《1》功能介绍:播放比较短的音音效,常用于做系统提示音使用到的框架(AudioTool...

  • iOS - 音效、音频、录音

    *1、播放 (1)音效播放 《1》功能介绍:播放比较短的音音效,常用于做系统提示音使用到的框架(AudioTool...

  • App播放短音效

    一. 系统音效(短音效播放) 引用 AudioToolbox framework使用AudioToolbox fr...

  • 声音+happyBird+触发器

    1.声音必要条件:需要AudioListener组件(Camera) 播放音效: //播放一个游戏结束的音效:1....

网友评论

      本文标题:播放音效

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