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人!

时间: 2024-10-20 03:23:08

iOS 9音频应用播放音频之ios9音频基本功能的相关文章

网页开发之amr音频的播放

mp3格式播放大家都知道,amr格式就陌生了,至少我之前没有做过 amr格式文件播放出来的声音音质比mp3差,主要应用于手机铃声和手机录音,目的是为了给手机用户节省流量.大部分主流的音视频播放器都支持amr格式,现在要实现网页播放有点问题(还要考虑兼容性).百度一番,调试一番,终于听到声音了. 笔者采用的播放插件是QuickTime,不知道的可以百科一下,下面就是方法了:1.下载QuickTime软件并安装,地址 http://www.apple.com/quicktime/download/i

iOS 9音频应用播放音频之第一个ios9音频实例2

iOS 9音频应用播放音频之第一个ios9音频实例2 ios9音频应用关联 iOS9音频应用中对于在主视图上添加的视图或控件,在使用它们时必须要与插座变量进行关联.ios9插座变量其实就是为主视图中的视图或者控件起的别名,类似于实例化的对象.将主ios9视图中的Play Button按钮控件与插座变量playButton进行关联.具体的操作步骤如下: (1)使用设置编辑器的三个视图方式的图标,如图2.14所示,将Xcode的界面调整为如图2.15所示的效果. 图2.14  编辑器的三个视图方式的

iOS 9音频应用播放音频之控制播放速度

iOS 9音频应用播放音频之控制播放速度 iOS 9音频控制播放速度 iOS9音频文件在播放时是以一定的速度进行的.这个速度是可以进行更改的,从而实现iOS9音频文件的快速播放和慢速播放功能.要实现iOS9播放速度的更改需要使用AVAudioPlayer类中的rate属性实现.其语法形式如下: var rate: Float 其中,该属性设置的值为浮点类型,范围在0.5到2.0之间.如果该属性的值设置为1.0表示正常播放,它也是默认值.2.0表示以最快的速度进行播放,0.5表示以最慢的速度进行播

iOS 9音频应用播放音频之播放控制暂停停止前进后退的设置

iOS 9音频应用播放音频之播放控制暂停停止前进后退的设置 ios9音频应用播放控制 在“iOS 9音频应用播放音频之ios9音频基本功能”一文可以看到AVAudioPlayer类有很多的属性以及方法.本节将AVAudioPlayer类中常使用到的属性和方法进行详细的讲解. ios9音频应用暂停/停止 在音乐应用程序中都会有一个使音乐停止播放的按钮.当用户轻拍该按钮,正在播放的音乐就会停止.在iOS要想要正在播放的音频停止下来,可以使用AVAudioPlayer类中的pause()方法和stop

iOS开发—音频的播放的简单介绍和封装工具类

iOS开发—音频的播放的简单介绍和封装工具类 一.音效的播放简单介绍 简单来说,音频可以分为2种 (1)音效 又称“短音频”,通常在程序中的播放时长为1~2秒 在应用程序中起到点缀效果,提升整体用户体验 (2)音乐 比如游戏中的“背景音乐”,一般播放时间较长 框架:播放音频需要用到AVFoundation.framework框架 二.音效的播放 1.获得音效文件的路径 NSURL *url = [[NSBundle mainBundle] URLForResource:@"m_03.wav&qu

iOS 音频缓存播放思路

基础 先来简单了解一下一些基础的音频知识. 目前我们在计算机上进行音频播放都需要依赖于音频文件,音频文件的生成过程是将声音信息采样.量化和编码产生的数字信号的过程,人耳所能听到的声音,最低的频率是从20Hz起一直到最高频率20KHZ,因此音频文件格式的最大带宽是20KHZ.根据奈奎斯特的理论,只有采样频率高于声音信号最高频率的两倍时,才能把数字信号表示的声音还原成为原来的声音,所以音频文件的采样率一般在40~50KHZ,比如最常见的CD音质采样率44.1KHZ. 对声音进行采样.量化过程被称为脉

ios如何获取在 NsData 中下载的音频文件?

ios如何获取在 NsData 中下载的音频文件? 标签: ios  Objective-C 发布时间: 2014/12/12 7:48:06 在我的项目我有 Url 的音频......看看我的代码... ViewController.h #import <UIKit/UIKit.h> #import <AVFoundation/AVFoundation.h> @interface ViewController : UIViewController<AVAudioPlayer

[Swift通天遁地]八、媒体与动画-(1)实现音频的播放和停止

本文将演示实现对音频播放的控制. 首先确保在项目中,已经安装了所需的第三方类库,点击查看安装的配置文件. 1 platform :ios, '8.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'CryptoSwift', :git => "https://github.com/krzyzanowskim/CryptoSwift"

canvas+howler.js 解决同页面视频、音频同时播放问题

一直感觉canvas很神奇很有趣,趁最近项目少,拿前端之前做的一个静态项目试了下水深,个中的经验和体会记录如下.1一.横竖屏转换1.canvas样式#canvas { width: 100%; height: 100%; top: 0; left: 0; display: block;}1234567把canvas缩放定位到屏幕内,以宽高中较小的一边为准.12.横竖屏处理function config() { winHeight = window.innerHeight; winWidth =