[Swift]AVPlayerで音楽をストリーミング再生
Swiftでオンライン上の音声ファイルをストリーミング再生するためのメモ。
AVAudioPlayerではストリーミング再生できない
Swiftで音声ファイルの再生を検索すると、AVAudioPlayerがよく出てくる。
簡単に実装できるわけだけど、注意したいのがストリーミング再生には対応していないこと。公式サイトにもその旨が記載されている。
https://developer.apple.com/documentation/avfaudio/avaudioplayer
ストリーミング再生する時は、AVPlayerを使うようだ。
コード
import SwiftUI
import AVFoundation
var player: AVPlayer?
var playerItem: AVPlayerItem?
let url = URL(string: "https://s3.amazonaws.com/kargopolov/kukushka.mp3")
class MyPlayer {
let player = AVPlayer(url: url!)
func playAudio() {
player.play()
}
}
struct StreamingPlay: View {
var viewModel = MyPlayer()
var body: some View {
Button(action: {
viewModel.playAudio()
}) {
Text("Play Audio")
}
}
}
参考:https://www.appsdeveloperblog.com/avplayer-play-music-mp3-file-from-a-remote-url-in-swift/
https://qiita.com/Yuehan/items/fd925ce450c7783474f9
ボタンを押したらストリーミング再生されるようになっている。
こちらも忘れずに設定するように。