美文网首页iOS开发iOS学习笔记iOS Developer
iOS使用AVPlayer自定义音频播放器

iOS使用AVPlayer自定义音频播放器

作者: 九剑仙 | 来源:发表于2017-04-17 22:15 被阅读589次

    下一篇:iOS使用AVPlayer自定义视频播放器

    1. 音频播放的第一种方式,AVAudioPlayer:

    只能播放已缓存到本地的音频,功能相对简单,实现起来也很方便,不做重点讲解,代码如下:
    #import <AVFoundation/AVFoundation.h>

    /*
     使用时,必须创建全局变量
     */
    @interface LLAudioPlayer : AVAudioPlayer
    
    - (id)initWithContentsOfURL:(NSURL *)url error:(NSError **)outError;
    - (id)initWithData:(NSData *)data error:(NSError **)outError;
    - (void)startPlay;
    - (void)pausePlay;
    - (void)stopPlay;
    
    @end
    
    #import "LLAudioPlayer.h"
    
    @interface LLAudioPlayer ()
    
    @property (nonatomic, strong) AVAudioSession     *audioSession;
    
    @end
    
    @implementation LLAudioPlayer
    
    - (id)initWithContentsOfURL:(NSURL *)url error:(NSError * _Nullable __autoreleasing *)outError{
    self = [super initWithContentsOfURL:url error:outError];
    if (self) {
        self.volume = 1.0;      //音量 0.0-1.0之间
        //self.numberOfLoops = 1; //循环次数 默认只播放一次
        self.currentTime = 0.0; //播放位置 可以指定从任意位置开始播放
    }
    return self;
    }
    
    - (id)initWithData:(NSData *)data error:(NSError * _Nullable __autoreleasing *)outError{
    self = [super initWithData:data error:outError];
    if (self) {
        self.volume = 1.0;      //音量 0.0-1.0之间
        //self.numberOfLoops = 1; //循环次数 默认只播放一次
        self.currentTime = 0.0; //播放位置 可以指定从任意位置开始播放
    }
    return self;
    }
    
    - (void)startPlay{//播放
    _audioSession = [AVAudioSession sharedInstance];
    [_audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
    [_audioSession setActive:YES error:nil];
    [self prepareToPlay];//分配播放所需的资源,并将其加入内部播放队列
    [self play];
    }
    
    - (void)pausePlay{//暂停
    [self pause];
    [_audioSession setActive:NO error:nil];
    }
    
    - (void)stopPlay{//停止
    [self stop];
    [_audioSession setActive:NO error:nil];
    }
    
    @end
    

    2. 音频播放的第二种方式,AVPlayer:

    话不多说,先上效果图:

    LLAudioPlayer-播放界面.png LLAudioPlayer-歌曲列表.png LLAudioPlayer-锁屏界面.jpg

    github下载地址:https://github.com/wangzhaomeng/LLAudioPlayer

    代码比较多,就不一一解释了,感兴趣的童鞋可以下个demo看看,注释的很详细,就说几个注意事项:
    1、如何实现后台播放;
    2、处理中断事件,比如来电话时停止,电话挂断后恢复;
    3、锁屏界面与交互处理。


    后台设置.png 实现监听.png 注册后台与处理中断.png 设置锁屏界面.png

    基本功能已经实现,单曲循环、随机播放,顺序播放、查看播放列表等等,同时添加了音频文件出错时的错误处理,可放心使用。

    觉得好,就给个star,谢谢!

    相关文章

      网友评论

      • 不余先生:支持一下!
      • 6239961ce796:播放在线音频的时候有问题
        九剑仙:找到原因了,有些音频可能需要缓存一段时间之后才能播放,耐心等一会儿就好了
        九剑仙:demo已经改了,你可以去看一下,做了进一步优化...但是有些网络音频还是不能播放,目前还在找原因
      • cacb98a35daa:给楼主赞一个
        九剑仙:@流浪湖 谢谢
      • 白水灬煮一切:感谢分享!很不错
        九剑仙:@小僵儿 3Q
      • 秋雨无痕:这方面的文章有很多,它还可以播视频
        秋雨无痕:@九剑仙 音频播放可以看看core audio unit,这方面的写的好的是EZAudio
        秋雨无痕:@九剑仙 内容可以深挖,apple文档里就有的还用写出来吗
        九剑仙:@秋雨无痕 那又如何
      • 九剑仙:如有雷同,纯属巧合!

      本文标题:iOS使用AVPlayer自定义音频播放器

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