📜  swiftui 播放 mp3 - Swift (1)

📅  最后修改于: 2023-12-03 15:20:25.371000             🧑  作者: Mango

在SwiftUI中使用AVPlayer播放MP3音频文件

在SwiftUI中使用AVPlayer播放MP3音频文件非常简单。下面介绍如何实现。

导入AVFoundation框架

在项目中导入AVFoundation框架,在需要使用的文件中加入如下代码:

import AVFoundation
创建AVPlayer对象和AVPlayerItem对象
var audioPlayer: AVPlayer!
var audioPlayerItem: AVPlayerItem!

创建AVPlayer对象和AVPlayerItem对象。

初始化AVPlayerItem对象
let url = Bundle.main.url(forResource: "audio_file_name", withExtension: "mp3")
audioPlayerItem = AVPlayerItem(url: url!)

初始化AVPlayerItem对象,将音频文件名和扩展名传入,并使用Bundle.main获取文件URL。

初始化AVPlayer对象
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编辑器打开浏览。