返回
巧用 AVPlayer 掌控 iOS 音频循环播放
IOS
2023-11-10 13:31:17
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.5 倍
player.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 的循环播放技巧,将大大提升你的音频播放体验。从基本播放控制到高级循环设置,本文为你提供了全面的指南。通过灵活运用这些技巧,你能够创建身临其境的音频体验,让你的应用脱颖而出。