iOS 9音频应用播放音频之ios9音频基本功能
iOS 9音频应用播放音频之ios9音频基本功能
在iOS 9音频应用开发中最为简单和常用的就是AVFoundation框架中的AVAudioPlayer类。虽然AVAudioPlayer类不能播放网络上的音频文件,但是它可以播放本地音频文件,以及缓冲区的文件。本章将讲解最为基础的音频播放——本地音频文件的播放。
iOS 9音频应用开发基本功能
实现音频的播放需要使用到AVAudioPlayer类。AVAudioPlayer是AVFoundation.framework框架里面最基本的一个音频播放器的类。使用此类可以实现单个音频的播放、暂停以及停止等功能。本节将使用AVAudioPlayer类实现一个音频文件的播放。
iOS 9中的AVAudioPlayer类简介
AVAudioPlayer是iOS 2.2之后引入的AVFoundation.framework框架中的一个类,使用此类可以实现音频的播放。表2-1中总结了AVAudioPlayer类中使用到的方法。
表2-1 AVAudioPlayer类的方法
表2-2总结了了AVAudioPlayer类中使用到的属性。
表2-2 AVAudioPlayer类的属性
注意:在Xcode 6.0之后,在创建的项目中,AVFoundation.framework框架默认是被添加到项目中的。如果AVFoundation.framework框架没有被添加到项目中,就需要开发者手动进行添加。手动添加框架的具体操作步骤如下:
(1)选择导航窗口中的项目名称,打开目标窗口,如图2.1所示。
图2.1 目标窗口
(2)选择目标窗口中的Build Phases选项,打开Build Phases面板,如图2.2所示。
图2.2 Build Phases面板
(3)将Link Binary With Libraries(0 items)打开,会看到一个加号按钮,如图2.3所示。
图2.3 Link Binary With Libraries(0 items)
(4)选择加号按钮后,会弹出一个Choose frameworks and libraries to add对话框,如图2.4所示。
(5)在对话框中找到AVFoundation.framework框架,单击Add按钮。此时,就会在Link Binary With Libraries中出现添加的框架,如图2.5所示。这表明此框架已经添加到了项目中。
图2.4 Choose frameworks and libraries to add对话框
图2.5 添加框架
ios9音频应用开发准备素材文件
在iOS9的游戏应用中(如例如超级玛丽)或者是酷狗音乐打开时,经常会有音频的播放。这些音频都是应用程序预置的,也就是素材文件。在实现播放本地音频文件之前,首先需要将预置的音频文件添加到创建的项目中。添加音频文件的具体操作步骤如下。
(1)在创建项目的导航窗口中右击,弹出快捷菜单。
(2)在弹出的快捷菜单中选择Add Files to "***"…命令。弹出选择文件对话框,如图2.6所示。
(3)选择音频文件后,单击Add按钮,此时被选择的音频文件就添加到了创建的项目中。
图2.6 添加音频文件
注意:添加音频文件到创建的项目中除了以上讲解的方式外,还有一种方式,具体的操作步骤如下。
(1)找到需要添加到项目中的音频文件,将其拖动到创建的项目中,弹出Choose options for adding these files:对话框架,如图2.7所示。
图2.7 添加音频文件
(2)单击Finish按钮后,音频文件就添加到了创建的项目中。
注意:在添加音频文件中提到的两种方式,除了可以添加音频文件外,还可以添加其他文件,如图像文件、字体文件等。
ios9音频应用开发加载音频文件
加载音频文件是为了对AVAudioPlayer类进行实例化,实例化时需要使用到init()方法,根据init()方法参数需求的不同,可以分为4种形式,分别为init(contentsOfURL:)、init(data:)、init(contentsOfURL:fileTypeHint:)和init(data:fileTypeHint:)。以下就是对这四种形式的讲解。
1.init(contentsOfURL:)
init(contentsOfURL:)是使用本地音频文件的地址对AVAudioPlayer类进行实例化。其语法形式如下:
- init(contentsOfURL url: NSURL) throws
其中,参数url是NSURL对象。NSURL是一个数据类型,实际上就是一个地址,很多开发人员会有疑惑,地址就是一个字符串,为什么还有NSURL类型,那是因为地址分为绝地路径(描述目标文件夹的位置)和相对路径(显示文件的完整路径)。对于绝对路径来说,地址的字符串都会比较复杂,包括很多请求参数。这样,在请求过程中需要解析出来每个部分,所以封装一个NSURL。所以需要将字符串转换为NSURL,对于NSURL的转换其实可以使用它的实例化方法init来实现,这个方法中会有一个字符串参数,也就是使用字符串去实例化NSURL方法,其语法形式如下:
- init(fileURLWithPath path: String)
其中,参数path是一个字符串。此字符串是一个地址(一般来说不同部分之间以斜线(/)分隔),这个地址可以是相对路径,也可以是绝对路径。
注意:参数path是只可以是本地文件的地址,不可以是网络地址。
2.init(data:)
在前面的内容中提到AVAudioPlayer类不可以播放从网络上获取音频文件,但是可以播放从网络上下载到内存缓冲区的音频。要实现内存缓冲区音频的播放,需要使用init()方法的init(data:)方式,其语法形式如下:
- init(data data: NSData) throws
其中,参数data是一个NSData对象,表示一个音频数据。由于是要播放内存缓冲区的音频,所以NSData对象在创建时需要指定音频文件的地址,此时需要使用到init()方法的init(contentsOfFile:)形式。
- init?(contentsOfFile path: String)
其中,参数path是一个字符串,代码表示文件的绝对路径。
注意:参数data必须是一个完整的文件。
3.init(contentsOfURL:fileTypeHint:)
方法init(contentsOfURL:)和init(data:)都是在具有后缀名的情况下使用的形式,但是在网络上下载的音频文件可能由于某些原因没有后缀名。这时就需要使用到init()方法的init(contentsOfURL:fileTypeHint:)形式以及init(data:fileTypeHint:)。init(contentsOfURL:fileTypeHint:)的语法形式如下:
- init(contentsOfURL url: NSURL,
- fileTypeHint utiString: String?) throws
其中,参数url是NSURL对象,此对象的实例化在前面讲解过。参数utiString用来指定文件类型的提示,用于提示系统该文件属于什么类型。其中,文件类型的提示如表2-3所示。
表2-3 文件类型的提示
4.init(data:fileTypeHint:)
init(data:fileTypeHint:)形式的语法形式如下:
- init(data data: NSData,
- fileTypeHint utiString: String?) throws
其中,参数url是NSURL对象,此对象的实例化在前面讲解过。参数utiString用来指定文件类型的提示,这些提示可以参考表2-3。
ios9音频应用开发添加音频文件到缓冲区
对于音频文件来说,读取的次数会过于频繁,这样不仅可能导致存储卡损耗,还会增加CPU的负担。为了解决这一问题,我们可以将加载的音频文件存入到缓冲区中(缓冲区为暂时放置输出或输入数据的地方)。而这一过程需要使用到AVAudioPlayer的prepareToPlay()方法,其语法形式如下
- func prepareToPlay() -> Bool
其中,该方法的返回值类型为Bool,即布尔类型。当值为真时,表示将文件放入缓存;反之,则不放入缓存。
ios9音频应用开发播放音频
最后一步就是播放音频,此功能的实现需要使用到AVAudioPlayer的play()方法,其语法形式如下:
- func play() -> Bool
其中,该方法的返回值类型为Bool即布尔类型。当值为真时,表示音频文件播放成功;反之,则失败。
本文选自:iOS 9音频应用开发基础教程大学霸内部资料,转载请注明出处,尊重技术尊重IT人!
iOS 9音频应用播放音频之ios9音频基本功能的更多相关文章
- iOS 9音频应用播放音频之第一个ios9音频实例2
iOS 9音频应用播放音频之第一个ios9音频实例2 ios9音频应用关联 iOS9音频应用中对于在主视图上添加的视图或控件,在使用它们时必须要与插座变量进行关联.ios9插座变量其实就是为主视图中的 ...
- iOS 9音频应用播放音频之第一个ios9音频实例
iOS 9音频应用播放音频之第一个ios9音频实例 第一个ios9音频实例 为了让开发者可以对上面的内容有更加深入的了解,本节将实现播放音频的第一个实例.在此实例中会涉及到项目的创建.界面设计.关联以 ...
- iOS 9音频应用播放音频之控制播放速度
iOS 9音频应用播放音频之控制播放速度 iOS 9音频控制播放速度 iOS9音频文件在播放时是以一定的速度进行的.这个速度是可以进行更改的,从而实现iOS9音频文件的快速播放和慢速播放功能.要实现i ...
- iOS 9音频应用播放音频之音量设置与声道设置
iOS 9音频应用播放音频之音量设置与声道设置 iOS 9音频应用音量设置 音量又称响度.音强,是指人耳对所听到的声音大小强弱的主观感受,其客观评价尺度是声音的振幅大小.在iOS 9音频应用的应用中, ...
- iOS 9音频应用播放音频之播放控制暂停停止前进后退的设置
iOS 9音频应用播放音频之播放控制暂停停止前进后退的设置 ios9音频应用播放控制 在“iOS 9音频应用播放音频之ios9音频基本功能”一文可以看到AVAudioPlayer类有很多的属性以及方法 ...
- iOS开发拓展篇—封装音频文件播放工具类
iOS开发拓展篇—封装音频文件播放工具类 一.简单说明 1.关于音乐播放的简单说明 (1)音乐播放用到一个叫做AVAudioPlayer的类 (2)AVAudioPlayer常用方法 加载音乐文件 - ...
- iOS 9音频应用播放音频之iOS 9音频播放进度
iOS 9音频应用播放音频之iOS 9音频播放进度 iOS 9音频应用开发播放进度 音频文件在播放后经过了多久以及还有多久才可以播放完毕,想必是用户所关注的问题.为了解决这一问题,在很多的音乐播放器中 ...
- html5音频audio对象处理以及ios微信端自动播放和息屏后唤醒的判断---可供参考(功能都完整实现了,只是细节还没处理的很好)
// html模版中的 此处结合了weui样式整合的微信手机端片段代码(不可直接粘贴复制进行使用)里面含有一些php的写法,可直接略过..###重点参考js代码### <div> < ...
- 【iOS录音与播放】实现利用音频队列,通过缓存进行对声音的采集与播放
都说iOS最恶心的部分是流媒体,其中恶心的恶心之处更在即时语音. 所以我们先不谈即时语音,研究一下,iOS中声音采集与播放的实现. 要在iOS设备上实现录音和播放功能,苹果提供了简单的做法,那就是利用 ...
随机推荐
- 批量提取图片主要3个颜色匹配中文名字并写入到excel设置对应颜色的背景
from gevent import monkey monkey.patch_all() import gevent from haishoku.haishoku import Haishoku im ...
- NYOJ 221 Tree (二叉树)
题目链接 描述 Little Valentine liked playing with binary trees very much. Her favorite game was constructi ...
- php常用表单验证类用法实例
<?php /** * 页面作用:常用表单验证类 * 作 者:欣然随风 * QQ:276624915 */ class class_post { //验证是否为指定长度的字母/数字组合 func ...
- Mac nginx 配置
nginx 安装: 在苹果系统下如果要安装nginx,首先要安装brew.安装brew可以查看网站:https://brew.sh: 一条命令即可搞定:/usr/bin/ruby -e "$ ...
- 一款线程安全、基本功能齐全的STL
MiniSTL 目前正在完成一个STL,主要想通过该项目锻炼C++编程.模板编程.熟悉STL.锻炼数据结构和算法能力. 项目的目标是实现STL的几大构件+线程安全.项目过程中主要参考SGI STL源码 ...
- linux 进程优先级 之设置实时进程 (另一种方式是设置nice值)【转】
转自:https://www.cnblogs.com/jkred369/p/6731353.html Linux内核的三种调度策略: 1,SCHED_OTHER 分时调度策略, 2,SCHED_FIF ...
- 非交互式shell脚本案例-实现自主从oracle数据库获取相关数据,并在制定目录生成相应规则的文件脚本
get_task_id 脚本内容 #!/usr/bin/expect#配置登陆数据库的端口set port 22#配置登陆数据库的ip地址set oracleip 10.0.4.41#配置数据库实例名 ...
- html的loadrunner脚本2
Action(){ char buf[1911]; //¶¨Òå×Ö·ûÊý×飬Ö÷ÒªÓÃÓÚдÈëXML±¨Îĵ½»º³åÇø char str_Body[4086]; //³Ð½Ó±¨Î ...
- redis aof文件过大问题
http://www.itnose.net/detail/6682725.html 最近新安装了一台redis,版本为redis-3.2.5 数据盘用的是固态硬盘. 之前用的是普通硬盘,redis日志 ...
- C#+TaskScheduler(定时任务)实现定时自动下载
C# /TaskScheduler /定时任务 /定时自动下载 3410 实现原理,客户是广电,在广电服务器创建一个FTP目录,然后每天自动从卫星上自动更新节目列表, 然后功能就是要每天定点一个时间自 ...