zoukankan      html  css  js  c++  java
  • AVAudioPlayer实现音乐播放(AFSoundManager的简单介绍)

              AVAudioPlayer是iOS自带的音乐播放类库,它只能播放单个声音文件,而且只能播放本地文件,不具备播放网络流媒体的能力。

              使用AVAudioPlayer首先需要导入AVFoundation.framework。用到的框架是AVFoundation框架。

              创建播放器,并实现播放,暂停功能。

              用url来初始化

        NSURL *url = [NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"music" ofType:@"mp3"]];
        _myMusicPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:url error:nil];//URL必须为本地文件url

             用nsdata来初始化

        NSURL *url = [NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"music" ofType:@"mp3"]];
        NSData *mydata = [[NSData alloc]initWithContentsOfURL:url];
        _myMusicPlayer = [[AVAudioPlayer alloc]initWithData:mydata error:nil];

             在此通过如下方法,可以实现AVAudioPlayer播放网络流媒体:

            NSURL *url = [NSURL URLWithString:info.url];//初始化网络url
            NSData *data = [[NSData alloc]initWithContentsOfURL:url];
            NSString *docDirPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
            NSString *filePath = [NSString stringWithFormat:@"%@/%@.mp4", docDirPath , @"temp"];
            [data writeToFile:filePath atomically:YES];//在沙盒Document目录下缓存文件
            NSURL *musicurl = [NSURL fileURLWithPath:filePath];

    _myMusicPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:musicurl error:nil];//获得本地文件路径,就可以播放网络文件了/

              AVAudioPlayer的相关属性:

              1.音量控制:

    _myMusicPlayer.volume=0.8;//0.0~1.0之间 

              2.循环次数:

    _myMusicPlayer.numberOfLoops = 3;//默认只播放一次  

               3.当前播放时间点:

    _myMusicPlayer.currentTime = 15.0

               4.播放总时长:

    NSTimeInterval duration = _myMusicPlayer.dueration;

               5.开始喝暂停:

    [ _myMusicPlayer prepareToPlay];//分配播放所需的资源,并将其加入内部播放队列
    [_myMusicPlayer play];//播放  
    [_myMusicPlayer stop];//停止
    [_myMusicPlayer pause];//暂停

               相关代理:

    - (void)audioPlayerDidFinishPlaying:(AVAudioPlayer*)player successfully:(BOOL)flag{  
        //播放结束时执行的动作  
    }  
    - (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer*)player error:(NSError *)error{  
        //解码错误执行的动作  
    }  
    - (void)audioPlayerBeginInteruption:(AVAudioPlayer*)player{  
        //处理中断的代码  
    }  
    - (void)audioPlayerEndInteruption:(AVAudioPlayer*)player{  
        //处理中断结束的代码  
    }  

               AVAudioPlayer 可以实现单个音频的简单播放,但是对于大量音乐文件和流媒体的播放不是很好,在这里可以使用AFSoundManager第三方框架来实现。它的使用也比较简单,可以在github上下载或者cocopad上安装,AFSoundManager通过将音频文件添加到一个队列里面,播放大量音乐文件相对简单方便。大家可以去试试。

    
    
    
  • 相关阅读:
    【转】 史上最详尽的平衡树(splay)讲解与模板(非指针版spaly)
    HihoCoder1325 : 平衡树·Treap(附STL版本)
    HihoCOder1323 : 回文字符串(区间DP)
    从分布式一致性算法到区块链共识机制
    Nacos Committer 张龙:Nacos Sync 的设计原理和规划
    MaxCompute Studio使用心得系列7——作业对比
    阿里云MaxCompute 2019-4月刊
    DDoS攻击新趋势:海量移动设备成为新一代肉鸡
    胡喜:从 BASIC 到 basic ,蚂蚁金服技术要解决两个基本的计算问题
    阿里开发者招聘节 | 面试题14:如何实现两金额数据相加(最多小数点两位)
  • 原文地址:https://www.cnblogs.com/moxuexiaotong/p/4950779.html
Copyright © 2011-2022 走看看