音频播放器

2016-10-23  本文已影响70人  Dove_Q

可以在线播放音乐
https://github.com/tumtumtum/StreamingKit
A fast and extensible gapless AudioPlayer/AudioStreamer for OSX and iOS (iPhone, iPad)

player必须要写成实例变量,不然会被释放

NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/music.mp3"];
    
    _player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
    //必须在prepare之前设置这个,rate才起作用
    _player.enableRate = YES;
    //播放速率
    _player.rate = 2.0;
    //音量
    _player.volume = 0.5;
    //循环次数
    _player.numberOfLoops = 0;
    //设置当前播放时间
    _player.currentTime = 0;
    NSLog(@"声道数目: %lu", _player.numberOfChannels);
    NSLog(@"歌曲时长: %f", _player.duration);
    //开启电平计数
    _player.meteringEnabled = YES;
    [_player updateMeters];
    for (int i = 0; i<_player.numberOfChannels; i++) {
        float power = [_player averagePowerForChannel:i];
        float peak = [_player peakPowerForChannel:i];
        NSLog(@"声道: %d, 平均电平: %f, 峰值电平: %f",i,power,peak);
    }
    [_player prepareToPlay];
    [_player play];

注册播放被中断的通知

- (void)handleInterruption: (NSNotification*)notification {
    NSLog(@"%@", notification.userInfo);
    AVAudioSessionInterruptionType interruptType;
    NSNumber *value = notification.userInfo[@"AVAudioSessionInterruptionTypeKey"];
    interruptType = value.integerValue;
    if ([notification.userInfo[@"AVAudioSessionInterruptionTypeKey"] isEqual:@(AVAudioSessionInterruptionTypeBegan)]) {
        //中断开始,电话来了
        [_player pause];
    }
    else if(interruptType == AVAudioSessionInterruptionTypeEnded) {
        //中断结束, 是否恢复播放
        if ([notification.userInfo[@"AVAudioSessionInterruptionTypeKey"] isEqual:@(AVAudioSessionInterruptionTypeBegan)]) {
            
            [_player play];
        }
    }
}

iOS音频回话类别

  1. AVAudioSessionCategoryAmbient
这个类不会停止其他的声音,相反他允许你App的音频播放与其他应用声音之上,调用
AVAudioPlayer的prepareToPlay和play方法都会返回YES。但是用户锁屏时你的App将停止所有
正在播放的音频,仅当你的App是唯一播放音频文件的应用时,静音模式将停止你的Ap的音频回放。如
果正当iPod播放一首歌时,你开始播放音频,将设备设置为静音模式并不能停止你的音频回放。
  1. AVAudioSessionCategorySoloAmbient
这个非常像AVAudioSessionCategoryAmbient类别,除了会停止其他App的音频回放,比如iPod
程序,当设备设置为静音模式,你的音频回放将会停止。
  1. AVAudioSessionCategoryRecord
这会停止其他应用的声音并且让你的应用也不能初始化音频回放,在该模式下你只能进行录音,使用该
类别,调用AVAudioPlayer的prepareToPlay会返回YES,但是调用play会返回NO。主UI界面会正
常工作,这时,即使你的设备屏幕被用户锁定,应用录音仍然会继续。
  1. AVAudioSessionCategoryPlayback
这个类别会禁止其他应用的音频回放,你可以使用AVAudioPlayer的prepareToPlay和play方法在
你应用中播放声音,主界面会照常工作,这时,即使屏幕被锁或者设备为静音模式,你应用的音频回放
都会继续。
  1. AVAudioSessionCategoryPlayAndRecord
这个类别允许你的应用程序同时进行声音的播放和录制,当声音录制或者播放开始后,其他应用声音播
放会停止。当主页面会照常工作,这时,即使屏幕被锁定or设备为静音模式,音频回放和录制都会继
续。
  1. AVAudioSessionCategoryAudioProcessing
这个类别用于应用中进行音频处理的情形,而不是音频回放和录制。设置了这个模式,你在应用中就不
能播放和录制任何声音。调用AVAudioPlayer的prepareToPlay和play方法都将返回NO。其他应用
的音频回放,比如iPod也会在此模式下 停止。
上一篇下一篇

猜你喜欢

热点阅读