IOS中有三种播放音频的方式:AVAudioPlayer、音频服务、音频队列。

AVAudioPlayer在AVFoundation框架下,所以我们要导入AVFoundation.framework。

AVAudioPlayer类封装了播放单个声音的能力。播放器可以用NSURL或者NSData来初始化,要注意的是NSURL并不可以是网络url而必须是本地文件URL,因为       AVAudioPlayer不具备播放网络音频的能力,不过我们可以用过一点小手段使其具备这个能力,留待稍后讲解。

一个AVAudioPlayer只能播放一个音频,如果你想混音你可以创建多个AVAudioPlayer实例,每个相当于混音板上的一个轨道。

iOS多媒体播放音乐AVAudioPlayer和AVPlayer

1 iOS系统的音频播放方式

AVAudioPlayer AVPlayer 系统声音音频排列

AVAudioPlayer

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

AVPlayer

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

音频队列

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

2 AVAudioPlayer的使用

使用AVAudioPlayer和AVPlayer需要引用AVFoundation类库

ViewController.h

#import <UIKit/UIKit.h>

#import <AVFoundation/AVFoundation.h>

@interface ViewController :UIViewController

{

AVAudioPlayer *audioplayer;

}

@end

ViewController.m

在.m文件中的loadview方法中添加以下方法

#import "ViewController.h"

@interfaceViewController ()

@end

@implementation ViewController

@synthesize label;

@synthesize textField;

- (void)viewDidLoad

{

[superview   DidLoad];

//方法一:

//NSURL  *url = [NSURL fileURLWithPath:[NSString

//stringWithFormat:@"%@/想你的夜.mp3",  [[NSBundle mainBundle]  resourcePath]]];

//方法二

NSBundle *bundle = [NSBundlemainBundle];

NSString *urlString = [bundlepathForResource:@"想你的夜" ofType:@"mp3"];

NSURL *url = [NSURLfileURLWithPath:urlString];

NSError *error;

audioplayer = [[AVAudioPlayeralloc]initWithContentsOfURL:urlerror:&error];

//音量的控制

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

//循环次数,只要将AVAudioPlayer的numberOfLoops属性设为负数,音频文件就会一直循环播放直到调用stop方法

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

//播放位置

audioplayer.currentTime = 15.0;//可以指定从任意位置开始播放

//声道数

NSInteger channals =  audioplayer.numberOfChannels;//只读属性

//持续时间

NSTimeInterval duration = audioplayer.duration;//获取采取的持续时间

if (audioplayer==nil) {

NSLog([error  description]);

}

else{

[audioplayer  play];

}

}

@end

播放声音

  1. [ player prepareToPlay];//分配播放所需的资源,并将其加入内部播放队列
  2. [player play];//播放
  3. [player stop];/

代理方法

加入播放出现异常,或者被更高级别的系统任务打断,我们的程序还没来得及收场就挂了,怎么办?不急,我们可以通过几个委托方法很好地处理所有的情形。

首先给player设置委托是必须的:

  1. player.delegate = self;
  1. - (void)audioPlayerDidFinishPlaying:(AVAudioPlayer*)player successfully:(BOOL)flag{
  2. //播放结束时执行的动作
  3. }
  4. - (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer*)player error:(NSError *)error{
  5. //解码错误执行的动作
  6. }
  7. - (void)audioPlayerBeginInteruption:(AVAudioPlayer*)player{
  8. //处理中断的代码
  9. }
  10. - (void)audioPlayerEndInteruption:(AVAudioPlayer*)player{
  11. //处理中断结束的代码
  12. }

ios中AVAudioPlayer音频播放器相关推荐

  1. AVAudioPlayer音频播放器-备用

    IOS中有三种播放音频的方式:AVAudioPlayer.音频服务.音频队列. 此文主要讲AVAudioPlayer,其他两个请见相关文章. AVAudioPlayer在AVFoundation框架下 ...

  2. vue3中实现音频播放器APlayer

    前言: vue2的时候,分享了一个很好用的插件是vue-aplayer,但是他是不支持vue3的,这里分享vue3使用APlayer来实现一个播放器的方法. 实现效果: 官方: git地址:点我 ap ...

  3. ios中的音频播放,好文,mark,等待后续

    http://www.cocoachina.com/applenews/devnews/2014/0716/9155.html

  4. iOS开发系列--音频播放、录音、视频播放、拍照、视频录制(转)

    概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像 ...

  5. 牛人iOS开发系列--音频播放、录音、视频播放、拍照、视频录制

    概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像 ...

  6. iOS开发系列--音频播放、录音、视频播放、拍照、视频录制

    概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像 ...

  7. iOS录音和音频播放

    文章目录 简介 `AVAudioRecorder`录音 `AVAudioPlayer`播放音频文件. 简介 最近公司研发了一个语音识别的框架,但这个框架是后端识别,所以需要手机端录音,录音后将音频文件 ...

  8. iOS开发系列–音频播放、录音、视频播放、拍照、视频录制

    iOS开发系列–音频播放.录音.视频播放.拍照.视频录制 - KenshinCui - 博客园 代码改变世界 Posts - 69, Articles - 0, Comments - 1004 Cnb ...

  9. Discuz论坛web网页mp3音频播放器源码下载

    最近在做一个DZ论坛的搭建,在前几天的时候遇到Flash+Js的幻灯片的问题,特写了一篇<JS+Flash焦点图轮播源代码(2屏,3屏,多屏)>来记录论坛搭建过程遇到的一些技术性问题,以便 ...

最新文章

  1. 《EMCAScript6入门》读书笔记——24.编程风格
  2. html如何设置滚动动画,JavaScript 实现页面滚动动画
  3. 从代码角度揭示:华为鸿蒙的“套壳”真相!
  4. 【Java 系列笔记】语法基础 + Spring + Spring MVC + SpringBoot + 数据结构
  5. Struts2学习笔记(九) 拦截器(Interceptor)(下)
  6. 利用可分离卷积UNet进行木薯叶病分类
  7. 随机游走分割算法(Random Walk Segmentation Algorithm)
  8. ROS中gazebo工具学习(使用gazebo加载机器人模型)
  9. Windows7 SP1旗舰版精简版最终版本
  10. win10找不到计算机配置文件,Win10个性化设置无法打开提示该文件没有与之关联的程序怎么办?...
  11. JVM(3)-垃圾收集机制
  12. 2021年煤矿井下爆破模拟试题及煤矿井下爆破考试试题
  13. 42V转5V,42V转3.3V,42V转3V的降压芯片和LDO芯片的集合
  14. 女孩子付钱用计算机,“让女生付钱太没面子了,你转账给我吧。”
  15. HikariCP连接池教程
  16. c语言笛卡儿方程,基于用Pro/E从方程创建各种基准曲线(笛卡尔) 方程集合大全...
  17. 智慧社会:大数据与社会物理学 (财富汇) - 电子书下载(高清版PDF格式+EPUB格式)...
  18. hp 388g9服务器硬盘更换,HP DL380 G9 6块硬盘,做了RAID0+1.现在坏了一块硬盘,需要更换,需要怎么操作?...
  19. java获取时间段固定时间_获取固定时间段的每一天时间
  20. 【蓝桥杯】DS18B20基本应用

热门文章

  1. 隔壁小伙的wifi密码太简单了吧
  2. 2023山东国际养老服务业展览会/济南养老展/中国智慧养老展
  3. 小程序学习之路(持续更新)
  4. 单片机 rs232 c语言,完全手册 51单片机C语言开发详解系列之第8章 串口通讯实战—RS232...
  5. c++中的智能指针详解
  6. C# Action 委托
  7. 一杯敬毕设 一杯敬自己
  8. HTML:一种标记语言而不是编程语言(12.0)
  9. CC10000.CloudKubernetes——|CloudNative|
  10. java web 实现的增删改查(php+mysql+apache)