AVAudioPlayerを使って音楽の再生、一時停止、停止、ボリューム変更、再生速度変更を行う


AVAudioPlayerを使って音楽の再生、一時停止、停止、ボリューム変更、再生速度変更を行う方法です。 AVAudioPlayerを使うと簡単に音楽の再生などに関することするができます。 ただ AVAudioPlayer にできることは限られており、より複雑な操作をするためには AVAudioPlayerNode を使う必要があります。

AudioPlayer

ContentView.swift

import SwiftUI
import AVFoundation

struct ContentView: View {
    @State var audioPlayer: AVAudioPlayer!
    @State var isPause = false
    
    var body: some View {
        VStack {
            HStack {
                Button("Start") {
                    guard let url = Bundle.main.url(forResource: "autumn-leaves", withExtension: "mp3") else { return }
                    guard let data = try? Data(contentsOf: url) else { return }
                    audioPlayer = try? AVAudioPlayer(data: data)
                    audioPlayer.enableRate = true
                    audioPlayer?.play()
                }.padding()
                
                Button("Pause") {
                    if isPause {
                        audioPlayer.play()
                    } else {
                        audioPlayer.pause()
                    }
                    isPause.toggle()
                }.padding()
                
                Button("Stop") {
                    audioPlayer.stop()
                }.padding()
            }
            
            HStack {
                Button("Rate↑") {
                    audioPlayer.rate += 0.1
                }.padding()
                
                Button("Rate↓") {
                    audioPlayer.rate -= 0.1
                }.padding()
            }
            
            HStack {
                Button("Volume↑") {
                    audioPlayer.volume += 0.2
                }.padding()
                
                Button("Volume↓") {
                    audioPlayer.volume -= 0.2
                }.padding()
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}