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通过将音频文件添加到一个队列里面,播放大量音乐文件相对简单方便。大家可以去试试。

    
    
    
  • 相关阅读:
    函数节流和防抖
    前端优化
    webpack模块
    link和@import的区别
    BFC--CSS
    javaoop_破解jdbc
    javaoop反射
    java-oop集合与泛型
    java中几个小遗漏
    java异常处理和日志管理
  • 原文地址:https://www.cnblogs.com/moxuexiaotong/p/4950779.html
Copyright © 2011-2022 走看看