首页 > 代码库 > 音频播放
音频播放
FCAudioTool.h
//// FCAudioTool.h// AVAudioPlayer//#import <Foundation/Foundation.h>@interface FCAudioTool : NSObject/** * 播放音乐 * filename:音乐名 */+ (BOOL)playMusic:(NSString *)filename;/** * 暂停音乐 * filename:音乐名 */+ (void)pauseMusic:(NSString *)filename;/** * 关闭播放器 */+ (void)stopMusic:(NSString *)filename;/** * 播放音效 */+ (void)playSound:(NSString *)filename;/** * 关闭音效 */+ (void)pauseSound:(NSString *)filename;@end
FCAudioTool.m
//// FCAudioTool.m// AVAudioPlayer//// Created by Apple on 14-8-9.// Copyright (c) 2014年 it.heima. All rights reserved.//#import "FCAudioTool.h"#import <AVFoundation/AVFoundation.h>@implementation FCAudioTool/** * 存放所有音乐播放器 */static NSMutableDictionary *musicDict;/** * 存放所有音效的ID */static NSMutableDictionary *soundDict;+ (NSMutableDictionary *)musicDict{ if (!musicDict) { musicDict = [NSMutableDictionary dictionary]; } return musicDict;}+ (NSMutableDictionary *)soundDict{ if (!soundDict) { soundDict = [NSMutableDictionary dictionary]; } return soundDict;}/** * 播放音乐 * * @param filename filename */+ (BOOL)playMusic:(NSString *)filename{ // 如果没有此音乐名 if(!filename) return NO; // 1.取出相应的音乐播放器 AVAudioPlayer *player = [self musicDict][filename]; // 如果没有相对应的播放器,则创建一个 if (!player) { // 加载音乐路径 NSURL *url = [[NSBundle mainBundle] URLForResource:filename withExtension:nil]; // 创建播放器,(一个播放器只能播放一个音乐文件) player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; // 缓冲音乐文件,准备播放 BOOL isSuccess = [player prepareToPlay]; // 如果缓冲成功,则播放,反之不播放 if(!isSuccess) return NO; // 添加播放器 [self musicDict][filename] = player; } // 如果有相应的音乐播放器,则直接播放 // 判断音乐是否正在播放,如果正在播放,则不需要再次播放 if (!player.isPlaying) [player play]; return YES; // 正在播放}/** * 暂停音乐 */+ (void)pauseMusic:(NSString *)filename{ // 如果没有此音乐名,直接退出函数 if (!filename) return ; // 取出相应的音乐播放器 AVAudioPlayer *player = [self musicDict][filename]; // 音乐是否正在播放 if (player.isPlaying) // 暂停音乐 [player pause]; }/** * 关闭播放器 */+ (void)stopMusic:(NSString *)filename{ // 如果没有此音乐名,直接退出函数 if(!filename) return ; // 取出相应的音乐播放器 AVAudioPlayer *player = [self musicDict][filename]; // 关闭音乐播放器 [player stop]; // 将此播放器从字典中移除 [[self musicDict] removeObjectForKey:filename]; }/** * 播放音效 */+ (void)playSound:(NSString *)filename{ // 如果没有此音乐名,直接退出函数 if(!filename) return ; // 取出对应的音效 SystemSoundID soundID = [[self soundDict][filename] unsignedLongValue]; // 初始化 if (!soundID) { // 音频文件的url NSURL *url = [[NSBundle mainBundle] URLForResource:filename withExtension:nil]; if (!url) return ; AudioServicesCreateSystemSoundID((__bridge CFURLRef)(url), &soundID); // 存入字典 [self soundDict][filename] = @(soundID); } // 播放音效 AudioServicesPlaySystemSound(soundID);}/** * 销毁音效 */+ (void)disposeSound:(NSString *)filename{ if (!filename) return; // 1.取出对应的音效ID SystemSoundID soundID = [[self soundDict][filename] unsignedLongValue]; // 2.销毁 if (soundID) { AudioServicesDisposeSystemSoundID(soundID); [[self soundDict] removeObjectForKey:filename]; }}@end
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。