返回

巧用 AVPlayer 掌控 iOS 音频循环播放

IOS

iOS AVPlayer 简介

AVPlayer 是 iOS 中用于音频和视频播放的核心框架。它提供了强大的 API,让你能够轻松控制媒体播放、管理播放速率,以及处理复杂的媒体流。

循环播放音频

AVPlayer 提供了一个循环播放属性,让你可以设置音频是否无限期循环播放。要启用循环播放,只需将 player.loops 属性设置为 true 即可。

player.loops = true

控制播放

播放和暂停

要播放或暂停音频,可以使用 play()pause() 方法。

player.play() // 播放音频
player.pause() // 暂停音频

播放速率

AVPlayer 允许你调整音频的播放速率。速率可以是慢动作或快动作,范围从 0 到 2。

player.rate = 0.5 // 慢动作播放,速率为 0.5player.rate = 2.0 // 快动作播放,速率为 2

高级循环播放

自定义循环范围

默认情况下,AVPlayer 会从头到尾循环播放音频。但是,你也可以指定一个自定义的循环范围。为此,请使用 currentItem.seekableTimeRanges 属性获取音频的可播放时间范围。

let seekableTimeRanges = player.currentItem?.seekableTimeRanges

然后,你可以使用 seek(to:) 方法设置循环范围。

player.seek(to: CMTime(seconds: 30, preferredTimescale: 600)) // 从第 30 秒开始循环播放
player.seek(to: CMTime(seconds: 60, preferredTimescale: 600)) // 循环播放到第 60 秒结束

监听循环播放事件

要监听循环播放事件,可以使用 AVPlayerItemDidPlayToEndTimeNotification 通知。当音频播放到结尾时,此通知将被触发。

NotificationCenter.default.addObserver(self, selector: #selector(didPlayToEndTime(_:)), name: .AVPlayerItemDidPlayToEndTime, object: player.currentItem)

@objc func didPlayToEndTime(_ notification: Notification) {
    // 重置播放器到开始位置并重新开始播放
    player.seek(to: .zero)
    player.play()
}

结语

掌握 iOS AVPlayer 的循环播放技巧,将大大提升你的音频播放体验。从基本播放控制到高级循环设置,本文为你提供了全面的指南。通过灵活运用这些技巧,你能够创建身临其境的音频体验,让你的应用脱颖而出。