使用 AVAudioPlayer 在 iOS 应用程序中播放声音

17 Mar 2025 | 4 分钟阅读

在 iOS 应用程序中,我们需要在 iOS 应用程序中播放媒体声音(如 mp3)的场景。在本教程中,我们将讨论如何使用 AVAudioPlayer 在 iOS 应用程序中播放添加到 XCode 中的声音文件。

AVAudioPlayer 对象用于播放来自文件或缓冲区的音频数据。AVAudioPlayer 播放来自文件或缓冲区的数据。它声明如下。

我们可以使用 AVAudioPlayer 播放来自文件或缓冲区的任何时长的音频。我们还可以控制播放音频的音量、速度、声相和循环行为。它通过同步多个播放器的播放来同时播放多个声音。

AVAudioPlayer 提供了以下方法来控制播放行为。

序号方法描述
1func prepareToPlay() -> Bool此函数用于准备音频播放
2func play() -> Bool此函数用于异步播放音频。
3func play(atTime: TimeInterval) -> Bool此函数按给定的时间间隔安排播放时间。
4func pause()此函数用于暂停播放。
5func stop()此函数用于停止音频播放。

让我们创建一个播放添加到项目的声音文件的项目。

首先,我们需要将 AVFoundation 框架添加到我们的项目中。为此,请转到 XCode 项目属性中的“常规”选项卡,然后点击底部框架和库部分中的“+”图标。我们将获得一个对话框,从中选择框架。在框中键入 AVFoundation,如下所示添加框架。

Using AVAudioPlayer to play sounds in iOS applications

对于此项目,我们将添加一个示例 mp3 或 wav 声音文件。一旦我们有了声音文件,就可以通过将其拖放到 XCode 中将其添加到我们的项目中,如下所示。

Using AVAudioPlayer to play sounds in iOS applications

在 ViewController 类中,我们需要导入 AVFoundation 框架才能使用框架类。

现在,让我们在 ViewController 类中创建 AVAudioPlayer 类对象。

由于我们现在已经创建了 AVAudioPlayer() 对象,我们需要读取我们刚刚添加到 XCode 中的声音文件。为此,请在 ViewController 中添加以下代码。

如果我们注意到,我们在上面的代码中使用了 Bundle 来查找名为 Sound 且类型为 mp3 的声音文件。

现在,我们将使用 AVAudioPlayer 的 play() 方法播放声音,如下所示。

让我们在 Main.storyboard 中添加播放按钮,通过单击该按钮,我们可以在我们的 iOS 应用程序中播放声音。

Using AVAudioPlayer to play sounds in iOS applications

现在,在 ViewController 中创建播放按钮的动作出口,并添加以下代码。

现在,我们将注意到,一旦我们在 iOS 设备上运行该应用程序并点击播放按钮,音频就会播放。

AVAudioPlayer 类提供了其他几个属性来控制音频播放器的播放。让我们看一下 AVAudioPlayer 类的属性。

序号属性描述
1var isPlaying: Bool这是一个布尔值,指示音频播放器是否正在播放。
2var volume: Float这是一个浮点值,表示音频播放器的音量级别,相对于其他音频输出。
3var pan: Float它表示音频播放器的声相位置。
4var enableRate: Bool这是一个布尔值,指示我们是否可以调整音频播放器的播放速率。
5var rate: Float它表示音频播放器的播放速率。
6var numberOfLoops: Int它表示音频重复播放的次数。
7var currentTime: TimeInterval它表示音频时间线内的播放时间,以秒为单位。
8var duration: TimeInterval它表示音频播放的总时长。
9var numberOfChannels: Int它表示播放器音频中的音频通道数
10var channelAssignments: [AVAudioSessionChannelDescription]?它是与音频播放器关联的通道描述数组。
11var isMeteringEnabled: Bool这是一个布尔值,指示我们是否启用了音频播放器以启用计量数据。
12var url: URL?它表示音频文件的 URL。
13var data: Data?它表示音频二进制数据。
14var format: AVAudioFormat它表示播放器音频数据的格式。
15var settings: [String : Any]它是一个字典,提供有关播放器音频数据的信息。
16var currentDevice: String?它是当前音频播放器的唯一标识符。
17var deviceCurrentTime: TimeInterval它是音频输出设备时钟中显示的当前时间值,以秒为单位。