📅  最后修改于: 2023-12-03 15:20:25.371000             🧑  作者: Mango
在SwiftUI中使用AVPlayer播放MP3音频文件非常简单。下面介绍如何实现。
在项目中导入AVFoundation
框架,在需要使用的文件中加入如下代码:
import AVFoundation
var audioPlayer: AVPlayer!
var audioPlayerItem: AVPlayerItem!
创建AVPlayer对象和AVPlayerItem对象。
let url = Bundle.main.url(forResource: "audio_file_name", withExtension: "mp3")
audioPlayerItem = AVPlayerItem(url: url!)
初始化AVPlayerItem对象,将音频文件名和扩展名传入,并使用Bundle.main获取文件URL。
audioPlayer = AVPlayer(playerItem: audioPlayerItem)
初始化AVPlayer对象,将AVPlayerItem对象传入。
audioPlayer.play()
调用play方法,开始播放音频文件。
audioPlayer.pause()
调用pause方法,停止播放音频文件。
audioPlayer.addObserver(self, forKeyPath: "status", options: .new, context: nil)
添加观察者,监听播放状态。
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == "status" {
if audioPlayer.status == .readyToPlay {
// 可以开始播放
} else if audioPlayer.status == .failed || audioPlayer.status == .unknown {
// 播放失败或未知原因
}
}
}
在观察者方法中判断AVPlayer的状态,如果状态为.readyToPlay,则可以开始播放。
audioPlayer.seek(to: CMTime.zero)
将音频文件的时间轴设置为0,即可结束播放。
import SwiftUI
import AVFoundation
struct ContentView: View {
var body: some View {
Text("Hello, AVPlayer!")
.onAppear() {
var audioPlayer: AVPlayer!
var audioPlayerItem: AVPlayerItem!
let url = Bundle.main.url(forResource: "audio_file_name", withExtension: "mp3")
audioPlayerItem = AVPlayerItem(url: url!)
audioPlayer = AVPlayer(playerItem: audioPlayerItem)
audioPlayer.play()
audioPlayer.addObserver(self, forKeyPath: "status", options: .new, context: nil)
}
}
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == "status" {
if audioPlayer.status == .readyToPlay {
// 可以开始播放
} else if audioPlayer.status == .failed || audioPlayer.status == .unknown {
// 播放失败或未知原因
}
}
}
}
以上为在SwiftUI中使用AVPlayer播放MP3音频文件的完整示例代码。
以上代码片段来源于Markdown文件,可使用Markdown编辑器打开浏览。