iOS 音频播放

  1. AVAudioPlayer
NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp3"];
self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:path] error:nil];
 _player.numberOfLoops = 0;
 _player.volume = 1.0;
 _player.delegate = self;
 [ _player prepareToPlay];

[ _player play];
  1. AVPlayer
NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp3"];
    
AVPlayerItem *item = [[AVPlayerItem alloc] initWithURL:[NSURL fileURLWithPath:path]];
self.player = [[AVPlayer alloc] initWithPlayerItem:item];
 _player.volume = 1.0;
    
[self.player play];
  1. MediaPlayer
self.moviePlayerVC = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
[self.navigationController presentViewController:_moviePlayerVC animated:YES completion:nil];
  1. AudioToolbox
    可以播放时间长度30秒以内的声音文件。
SystemSoundID soundID;
NSString *path = [[NSBundle mainBundle]pathForResource:@"beep" ofType:@"wav"];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &soundID);
AudioServicesPlaySystemSound(soundID);
// 释放
AudioServicesDisposeSystemSoundID(soundID);


// 播放系统声音:
当参数为 1000-2000 之间数字时就是播放系统声音。1108为拍照声。
AudioServicesPlaySystemSound(1108);
//AudioServicesRemoveSystemSoundCompletion(1108);


// 提醒音和震动, 如果手机处于静音状态,则提醒音将自动触发震动
SystemSoundID sid;
AudioServicesCreateSystemSoundID((__bridge CFURLRef)url, &sid);
AudioServicesPlayAlertSound(sid);

// 仅震动
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

系统声音参考

  1. AudioUnit

AVAudioSession

Category

AvAudioSessionCategoryAmbient
应用会随着静音键和屏幕锁屏而停止播放音乐,但不会中止其他应用的声音。可以和其他应用同时播放声音。

AVAudioSessionCategorySoloAmbeient
类似于AVAudioSessionCategoryAmbient 但它会中止其他应用的声音。

AVAudioSessionCategoryPlayback
应用不会随着静音键和屏幕锁屏而停止播放。

AVAudioSessionCategoryRecord
用于录音。

AVAudioSessionCategoryPlayAndRecord
用于既需要播放声音又需要录音的应用,如语音聊天、视频通话应用。

AVAudioSessionCategoryAudioProcessing
当需要进行离线语音处理时使用。

设置 Category
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
[audioSession setActive:YES error:nil];

你可能感兴趣的:(iOS 音频播放)