美文网首页
iOS音频播放

iOS音频播放

作者: 雪影无痕 | 来源:发表于2021-09-01 10:36 被阅读0次

    ·iOS系统中的音频播放方式·AVAudioPlayer、AVPlayer、系统声音、音频队列

    ·AVAudioPlayer·使用简单方便,但只能播放本地音频,不支持流媒体播放

    ·AVPlayer·iOS4.0以后,可以使用AVPlayer播放本地音频和支持流媒体播放,但提供接口较少,处理音频不够灵活·音频队列

    ·音频队列主要处理流媒体播放,提供了强大且灵活的API接口(C函数的接口),但处理起来也较为复杂

    ·播放系统声音·音频数据可分为压缩和非压缩的存储类型。压缩的音频文件虽然文件体积较小(相对于非压缩的),但需要耗费处理器的性能进行解压和解码。

    ·如果音频文件体积较小,压缩后的音频文件,也不会节省较大的磁盘空间。像这一类小型非压缩的文件可以注册成为系统声音·格式为:caf/wav/aiff格式,且时长小于30s



    - (void)viewDidLoad {

        [super viewDidLoad];

        //1.plist文件Required background modes

        //App plays audio or streams audio/video using AirPlay

        //2.设置后台播放

        [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];

        //1取得本地音频文件路径

        NSString*filePath =  [[NSBundle mainBundle] pathForResource:@"安静" ofType:@"mp3"];

        NSURL*url = [NSURLfileURLWithPath:filePath];

        //创建全局播放器  AVAudioPlayer 只能播放本地音频文件

        _audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];

        //2播放流媒体音乐,AVPlayer都支持

        //获得网络链接

        NSString *str = @"http://ra01.sycdn.kuwo.cn/resource/n3/32/56/3260586875.mp3";

        NSURL*url1 = [NSURLURLWithString:str];

        _player= [[AVPlayeralloc]initWithURL:url1];

    }

    //1播放本地音乐

    - (IBAction)playLocalMusic:(id)sender {

        if(_audioPlayer.isPlaying){

            [_audioPlayerpause];

        }else{

            [_audioPlayerplay];

        }

    }

    //2播放流媒体音乐

    - (IBAction)playMusic:(id)sender {

        if(_isPlay) {

            [_playerpause];

        }else{

            [_playerplay];

        }

        _isPlay = !_isPlay;

    }

    //3播放系统声音

    - (IBAction)playSystemSound:(id)sender {

        NSString *filePath = [[NSBundle mainBundle] pathForResource:@"44th Street Medium.caf" ofType:nil];

        NSURL*url = [NSURLfileURLWithPath:filePath];

        UInt32  systemSoundID =10;

        //注册系统声音

        AudioServicesCreateSystemSoundID((__bridge CFURLRef)(url), &systemSoundID);

        //根据id播放系统声音

        AudioServicesPlaySystemSound(systemSoundID);

        //设置手机振动

        AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

    }

    //设置锁屏时界面显示的播放信息

    -(void)_initUI{

        /* MPMediaItemPropertyAlbumTitle

         // MPMediaItemPropertyAlbumTrackCount

         // MPMediaItemPropertyAlbumTrackNumber

         // MPMediaItemPropertyArtist

         // MPMediaItemPropertyArtwork

         // MPMediaItemPropertyComposer

         // MPMediaItemPropertyDiscCount

         // MPMediaItemPropertyDiscNumber

         // MPMediaItemPropertyGenre

         // MPMediaItemPropertyPersistentID

         // MPMediaItemPropertyPlaybackDuration

         // MPMediaItemPropertyTitle*/

        MPMediaItemArtwork *artWork = [[MPMediaItemArtwork alloc ] initWithImage:[UIImage imageNamed:@"mp3.jpg"]];

       NSDictionary *dic = @{

                              MPMediaItemPropertyAlbumTitle:@"兄弟你变了",

                              MPMediaItemPropertyArtist:@"庞龙",

                              MPMediaItemPropertyArtwork:  artWork

                              };

        [[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:dic];

    }

    -(BOOL )canBecomeFirstResponder{

        return YES;

    }

    -(void)viewWillAppear:(BOOL)animated{

        [superviewWillAppear:animated];

        [self becomeFirstResponder];

        [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

        [self_initUI];

    }

    -(void)viewWillDisappear:(BOOL)animated{

        [superviewWillDisappear:animated];

        [self resignFirstResponder];

        [[UIApplication sharedApplication] endReceivingRemoteControlEvents];

    }

    //设置远程监控

    -(void)remoteControlReceivedWithEvent:(UIEvent *)event{

        if (event.type == UIEventTypeRemoteControl) {

            switch(event.subtype) {

                case UIEventSubtypeRemoteControlPlay:

                    [_audioPlayerplay];

                    NSLog(@"播放");

                    break;

                case UIEventSubtypeRemoteControlPause:

                    [_audioPlayerpause];

                    NSLog(@"暂停");

                    break;

                case UIEventSubtypeRemoteControlNextTrack:

                    NSLog(@"下一首");

                    break;

                case UIEventSubtypeRemoteControlPreviousTrack:

                    NSLog(@"上一首");

                    break;

                default:

                    break;

            }

        }

    }

    相关文章

      网友评论

          本文标题:iOS音频播放

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