码迷,mamicode.com
首页 > 其他好文 > 详细

音频播放

时间:2015-10-28 22:39:16      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:

音频格式
 
技术分享
 
注意: 硬件解码器一次只能对一个音频文件解码. 在实际应用中通常使用非压缩的音频格式(AIFF) 或者CAF音频格式,从而减低系统在音频解码上的消耗, 达到省电的目的
 
LLAudioTool.h文件
 

#import <Foundation/Foundation.h>

 

@interface LLAudioTool : NSObject

 

/**

 *  播放音效

 *

 *  @param filename 音效文件名

 */

+ (void)playSound:(NSString *)filename;

 

/**

 *  销毁音效

 *

 *  @param filename 音效文件名

 */

+ (void)disposeSound:(NSString *)filename;

 

@end

 

 

LLAudeoTool.m文件

 

#import "LLAudioTool.h"

#import <AVFoundation/AVFoundation.h>

 

@implementation LLAudioTool

 

// 字典: filename作为key, soundID作为value

// 存放所有的音频ID

static NSMutableDictionary *_soundIDDict;

+ (void)initialize

{

    _soundIDDict = [NSMutableDictionary dictionary];

}

 

+ (void)playSound:(NSString *)filename

{

    if (!filename) return;

    

    // 1.从字典中取出soundID

    SystemSoundID soundID = [_soundIDDict[filename] unsignedLongValue];

    if (!soundID) { // 创建

        // 加载音效文件

        NSURL *url = [[NSBundle mainBundle] URLForResource:filename withExtension:nil];

        

        if (!url) return;

        

        // 创建音效ID

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

        

        // 放入字典

        _soundIDDict[filename] = @(soundID);

    }

    

    // 2.播放

    AudioServicesPlaySystemSound(soundID);

}

 

+ (void)disposeSound:(NSString *)filename

{

    if (!filename) return;

    

    SystemSoundID soundID = [_soundIDDict[filename] unsignedLongValue];

    if (soundID) {

        // 销毁音效ID

        AudioServicesDisposeSystemSoundID(soundID);

        

        // 从字典中移除

        [_soundIDDict removeObjectForKey:filename];

    }

}

@end

 

 

音频播放

标签:

原文地址:http://www.cnblogs.com/lile2015/p/4918720.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!