AvAudioPlayer类是编写iOS播放器

转载自 http://www.cnblogs.com/liukunpeng/p/3737412.html



首先介绍一下,AvAudioPlayer它是苹果公司封装好的一个类,用起来很方便,功能也很强大,但是它只支持播放沙盒存好的音乐,不支持在线播放,是苹果公司自家ipod播放器专用的。这点大家知道即可不必深究;


1,创建AvAudioPlayer:

  • 在工程中导入(AVFoundation.framework)框架,它是首要的,否则一切免谈,然后导入(#import )这个头文件。
  • 开始创建AvAudioPlayer
//这段代码是用来读取沙盒内歌曲用的
NSURL *soundFlieUrl = [[NSBundlemainBundle] URLForResource: _songsDatas[_index] withExtension:@"mp3"];

//创建一个错误对象,由于API接口要求的参数是传出参数,并且是指针的指针,所以在这里定义为指针对象
NSError *error = nil;
//创建AvAudioPlayer
AvAudioPlayer  *avAudioPlayer = [[AVAudioPlayeralloc]initWithContentsOfURL:
                                                _soundFlieUrl error:&error];
[avAudioPlayer play];

至此我们的播放器就可以唱歌了。但如果想要功能更强大还需要设置AvAudioPlayer的诸多属性。

AvAudioPlayer属性一览:



@property(readonly, getter=isPlaying) BOOL playing;用来表示是否是播放状态

-- (BOOL)prepareToPlay;准备播放

-- (BOOL)play;播放

-- (BOOL)playAtTime:(NSTimeInterval)time; 表示歌曲在这个时间开始播放

(readonly) NSUInteger numberOfChannels;** 音频播放器所对应音频声道数量

(readonly) NSTimeInterval duration;**表示曲目的总时长

(readonly) NSURL *url;**获取创建数据的为本地的URL,如果不是通过本地URL创建,取值为nil

(readonly) NSData *data;**获取创建的数据源为data,如果不是通过data传数据,取值为nil

float pan;**立体声的声道,-1是左声道,0是立体声,1是右声道

float volume;** 音频音量 0-1之间

BOOL enableRate;**指定一个音频播放器调节是否可用,要想调节一个播放器速度,设置这个属性为YES,调用时机在初始化音频后和调用prepareToPlay函数前

float rate;**音频播放速度,这个属性默认值是1.0,提供正常播放速度,0.5为速度一半,2.0为两倍速度,该值区域为0.5~2.0之间。该值起不起作用,受到enableRate影响。

NSTimeInterval currentTime;**
音频播放所对应音频在时间线上的当前播放点。如果音频正在播
放,currentTime被设置为当前播放位置到音频开始处的秒数。如果音频没有播放,currentTime被设置,play函数被调用是音频播放处
到音频开始处的秒数。通过设置这个属性,你可以指定音频的特定点,后实现音频的快进后快回。

(readonly) NSTimeInterval deviceCurrentTime;**
音频输出设备的时间值,单位秒。这个属性
的值在音频播放或停止时都会单调递增。如果多个音频播放器连接到音频播放设置,设备时间会一直增加,只要有一个音频播放器处在播放或暂停状态。否则设备时
间归0。使用这个属性去象征now,当调用playAtTime:函数时。通过配置多个音频播放器去播放在指定deviceCurrentTime的指定
点,你可以实现精确的同步性。

NSInteger numberOfLoops;**
设置音频循环次数。0是默认值,音频播放一次。设置一个正整数,指定播放次数正整数+1,设置一个负数,则无限循环播放,直到调用stop函数停止播放。

(readonly) NSDictionary *settings;**
音频播放器的设置字段,包括音频和所联系的播放器信息。

(getter=isMeteringEnabled) BOOL meteringEnabled; **
设置计量器是否可用,默认是关闭的。

初始化方法

**- (id)initWithContentsOfURL:(NSURL *)url error:(NSError )outError;

初始化返回一个播放器,播放数据源为url。

**- (id)initWithData:(NSData *)data error:(NSError )outError;

初始化返回一个播放器,播放数据源为data。



2.- (BOOL)prepareToPlay;

判断是否准备好音频文件,用音频播放器进行播放。

3.- (BOOL)play;

打开音频播放器。

4.- (BOOL)playAtTime:(NSTimeInterval)time ;

在过多少时间将要打开音频播放器。

5.- (void)pause;

暂停音频播放器。

6.- (void)stop;

停止音频播放器,必须把currentTime设置为0,音频播放器才会恢复到起始状态。

7.- (void)updateMeters;

更新仪表读数

8.- (float)peakPowerForChannel:(NSUInteger)channelNumber;

- (float)averagePowerForChannel:(NSUInteger)channelNumber;

读取每个声道平均电平和峰值电平,代表每个声道的分贝数,范围在-100~0之间。


代理:

1.**- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag;**

当音频播放完回调。

2.- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer )player error:(NSError)error;

解码错误回调。

3.**- (void)audioPlayerBeginInterruption:(AVAudioPlayer *)player;**

处理中断回调。

出现例子:当用户在音频回放期间受到电话时,音频会消失,出现这种情况时AVAudioPlayer委托接受
audioPlayerBeginInterruption:回调,音频会话暂时无效,并且暂停播放器。如果用户接听电话,那么应用程序中止,而应用程序
委托接受一个applicationWillResignActive:回调。当通话结束,应用程序重新启动(利用
applicationDidBecomeActive:回调)。如果用户拒绝接听电话那么将向委托发送
audioPlayerBeginInterruption:回调。可以从此方法回复回放。

4.**- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player withOptions:(NSUInteger)flags ;**

**- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player withFlags:(NSUInteger)flags;**

**- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player;**

处理中断结束回调。这里随着iOS系统更新,调用方法不同。

github 托管地址

https://github.com/liukunpengiOS/iOS-MusicPlayer

git clone 地址

https://github.com/liukunpengiOS/iOS-MusicPlayer.git

时间: 2024-10-06 16:47:41

AvAudioPlayer类是编写iOS播放器的相关文章

C#编写媒体播放器--Microsoft的Directx提供的DirectShow组件,该组件的程序集QuartzTypeLib.dll.

使用C#编写媒体播放器时,需要用到Microsoft的Directx提供的DirectShow组件.用该组件前需要先注册程序集QuartzTypeLib.dll. 1.用QuartzTypeLib.dll播放视频 1.1Form1.cs using System; using System.Windows.Forms; using QuartzTypeLib; namespace DirectShow {     public partial class Form1 : Form     {  

iOS播放器 - AVAudioPlayer

今天记录一下AVAudioPlayer,这个播放器类苹果提供了一些代理方法,主要用来播放本地音频. 其实也可以用来播放网络音频,只不过是将整个网络文件下载下来而已,在实际开发中会比较耗费流量不做推荐. 下面是相关代码: #import "ViewController.h" //引入框架 #import <AVFoundation/AVFoundation.h> @interface ViewController () < AVAudioPlayerDelegate &

iOS播放器 - AVPlayer

之前有说到在播放器中一点点小技巧,现在正式记录一下AVPlayer. 这里主要是说明用AVPlayer做音乐播放器的功能实现,所以不介绍AVPlayer中那个图层类. 首先我们要声明一下播放器,这里有个小坑如果不是全局变量有时候不能播放,网上有一篇文章对这个BUG有个深入研究可以去百度一下,这里不做深入探讨. @property (nonatomic ,strong) AVPlayer *avPlayer; @property (nonatomic ,strong) AVPlayerItem *

基于GStreamer编写Mp3播放器

一.简介 作者系统为CentOS6,本文在此基础上对Mp3播放器进行开发,需要使用mp3解码库libmad和gstreamer0.10-plugins-ugly,详细步骤如下.   二.操作步骤 1)下载 wget ftp://ftp.pbone.net/mirror/atrpms.net/el5-x86_64/atrpms/stable/libmad0-0.15.1b-4.el5.x86_64.rpm wget ftp://ftp.pbone.net/mirror/atrpms.net/el5

iOS 播放器静音设置方法

介绍:整理的两种设置播放器播放静音的方法 一.MPVolumeView-设置音量值为0 1.获取到当前系统音量值(恢复音量时有用) volumeFloat = [self getVolume]; -(float) getVolume { //获取系统系统音量视图 MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame: CGRectMake(-1000, -100, 100, 100)]; volumeView.hidden

ios开发之--AVAudioPlayer制作了一款播放器,耳机有声音,扬声器没声音

1,原因: 没有设置声道: AVAudioSession是一个单例,无需实例化即可直接使用.AVAudioSession在各种音频环境中起着非常重要的作用 针对不同的音频应用场景,需要设置不同的音频回话分类 2,解决方法: 在初始化AVAudioPlayer之前,设置声道,代码如下: AVAudioSession *audioSession = [AVAudioSession sharedInstance]; [audioSession setCategory:AVAudioSessionCat

iOS 播放器单例类

iOS播放器、Flutter高仿书旗小说、卡片动画、二维码扫码、菜单弹窗效果等源码

iOS精选源码 全网最详细购物车强势来袭 一款优雅易用的微型菜单弹窗(类似QQ和微信右上角弹窗) swift, UITableView的动态拖动重排CCPCellDragger 高仿书旗小说 Flutter版,支持iOS.Android NKAVPlayer 轻量级视频播放.控制,iOS AVPlayer RN 仿微信朋友圈 SwiftScan 二维码/条形码扫描.生成,仿微信.支付宝 Mac上解压Assets.car文件的小工具cartool tispr-card-stack - swift

OCiOS开发:音频播放器 AVAudioPlayer

简单介绍 AVAudioPlayer音频播放器可以提供简单的音频播放功能.其头文件包括在AVFoudation.framework中. AVAudioPlayer未提供可视化界面,须要通过其提供的播放控制接口自行实现. AVAudioPlayer仅能播放本地音频文件,并支持以下格式文件:.mp3..m4a..wav..caf..aif?. 经常用法 初始化方法 // 1.NSURL 它仅仅能从file://格式的URL装入音频数据,不支持流式音频及HTTP流和网络流. - (id)initWit