在ios开发过程中,音频常常会用到,而音频根据使用场合分为音效和音乐,音效一般只播映1~2秒
- ios音效支撑的格局
ios 支撑的音频格局有:aac、alac、he-aac、iLBc、IMA4、Linea PCM、MP3、CAF,其间,aac、alac、he-aac、mp3、caf支撑硬件解码,其他只支撑软件解码, 软件界面由于比较耗电,所以,咱们在开发过程中,常常选用的是caf、mp3
- 音频库
AVFoundation.framework
- 代码
// 打开资源
NSURL* url =[[NSBundle mainBundle]URLForResource:@"m_03" withExtension:@"wav"];
SystemSoundID soundID;
AudioServicesCreateSystemSoundID((__bridge CFURLRef)(url), &soundID);
// 播映音效
AudioServicesPlaySystemSound(self.soundID);
// 删除音效
AudioServicesDisposeSystemSoundID(self.soundID);
- 框架
- 加载音乐资源并播映
AVAudioPlayer* player = musicDict[fileName];
if (!player) {
NSURL* url = [[NSBundle mainBundle] URLForResource:fileName withExtension:nil];
NSCAssert(url != nil, @"fileName not found musics");
NSError* error;
player = [[AVAudioPlayer alloc]initWithContentsOfURL:url error:&error];
if (error) {
NSLog(@"load music error");
return;
}
[musicDict setObject:player forKey:fileName];
}
if (player.isPlaying == NO) {
[player play];
}
6.暂停 中止操作
[player pause];// 暂停
[player stop];// 中止
[player isplaying];// 是否在播映
好了,现在能播映音乐了,但咱们在看其他的使用的时分,一般当使用切换到后台的时分也能播映音乐,那这个又是怎么实现的呢?这个只需设置音频的后台播映,具体为:
1> 在后台敞开一个使命
- (void)applicationDidEnterBackground:(UIApplication *)application
{
// 敞开后台使命,让音乐持续播映
[application beginBackgroundTaskWithExpirationHandler:nil];
}
2> 设置项目配置文件
3> 设置音频链接会话,这个首要告知设备怎么处理音频事件的
1234 |
// 设置音频会话类型````AVAudioSession* session = [AVAudioSession sharedInstance];````[session setCategory:AVAudioSessionCategorySoloAmbient error:``nil``];````[session setActive:``YES error:``nil``];
|
---|
这里有很多会话类型,如果想具体了解,可参考:blog.csdn.net/daiyelang/a…
现在应该可以播映音乐了。