美文网首页
音频播放器

音频播放器

作者: Dove_Q | 来源:发表于2016-10-23 18:29 被阅读70次

    可以在线播放音乐
    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也会在此模式下 停止。
    

    相关文章

      网友评论

          本文标题:音频播放器

          本文链接:https://www.haomeiwen.com/subject/oglkuttx.html