一、前言
简单来说,音频可以分为两种:
- 音效:又称“短音频”,通常在程序中的播放时长为1~2秒,在应用程序中起到点缀效果,提升用户体验。
- 音乐:比如游戏中的背景音乐,一般播放时间较长。
播放音频需要用到的框架是AVFoundation.framework。
二、音效播放
引入头文件
#import <AVFoundation/foundation.h>播放音频
// 创建播放soundID
NSURL*url = [[NSBundlemainBundle] URLForResource:@"m_04.wav"withExtension:nil];
SystemSoundID soundID;
AudioServicesCreateSystemSoundID((__bridgeCFURLRef)(url), &soundID);
self.soundID = soundID;
// 播放音效
AudioServicesPlaySystemSound(soundID);
3.停止音频
- (void)didReceiveMemoryWarning {
AudioServicesDisposeSystemSoundID(self.soundID);
}
注意:
- 该函数也可以播放音乐,但是不建议使用该方法播放音乐。
- 不同格式的音频文件解码格式不一样,硬件解码耗电小,但是只能单线程;软件解码可以多线程,好点量大。开发中最好让平面设计提供硬件解码格式文件。
- 音效文件只需加载一次
三、音频格式
注意:硬件解码器一次只能对一个音频文件解码。在实际应用中通常使用非压缩的音频格式AIFF或者CAF音频格式从而减低系统在音频解码上的消耗达到省电的目的。
四、音频转换工具
转换aiff格式
afconvert -f AIFF -d I8 filename转换caf格式
afconvert -f caff -d aac -b 32000 filename批量转换
find . -name '*.mp3' -exec afconvert -f caff -d aac -b 32000 {} ;