iTunes 最早其實是 Apple 在 2001年推出的一款音樂播放軟體,比 iPhone 歷史還悠久,經過20年的發展,iTunes 已經成為全世界最大的音樂資料庫,每首歌曲都提供30秒左右的免費試聽,在上一節我們既然已經學會 iTunes 搜尋功能,當然也要來播放試聽內容。

用 SwiftUI 播放網路影音,比想像中簡單很多,只需用到 AVKit 物件庫中兩個物件:

  1. AVPlayer(): 播放各種常見格式的音樂(Audio)或影片(Video),檔案來源可為網路或本機
  2. VideoPlayer(): 提供SwiftUI相容的視圖外觀,控制AVPlayer播放、暫停、音量等

以小賈斯汀與Sean Kingston合作的歌曲"Eenie Meenie"為例,試聽檔的網址記錄在JSON結構的 "previewUrl" 欄位中:

https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview125/v4/bb/ce/30/bbce3088-f26c-f5e9-b8af-50344243726e/mzaf_17828995580283253999.plus.aac.p.m4a

在程式中播放影音檔的一般方法如下,記得一開始要 import AVKit 匯入物件庫:

// 3-3c 播放網路影音

import PlaygroundSupport
import SwiftUI
import AVKit

let 網址 = "<https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview125/v4/bb/ce/30/bbce3088-f26c-f5e9-b8af-50344243726e/mzaf_17828995580283253999.plus.aac.p.m4a>"
let myURL = URL(string: 網址)!
let 播放器 = AVPlayer(url: myURL)

struct 影音播放: View {
    var body: some View {
        VideoPlayer(player: 播放器)
            .onAppear() {
                播放器.play()
            }
    }
}

PlaygroundPage.current.setLiveView(影音播放())

程式分為兩個步驟:

第一部分,產出一個 AVPlayer() 物件實例,參數為影音檔案的網址(轉換為URL物件):

let 網址 = "<https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview125/v4/bb/ce/30/bbce3088-f26c-f5e9-b8af-50344243726e/mzaf_17828995580283253999.plus.aac.p.m4a>"
let myURL = URL(string: 網址)!
let 播放器 = AVPlayer(url: myURL)

第二部分,在視圖主體(body)中使用 VideoPlayer() 物件產生播放器外觀,參數為剛剛產出的 AVPlayer() 物件實例,並且呼叫 play() 開始播放。

VideoPlayer(player: 播放器)
    .onAppear() {
        播放器.play()
}

執行結果影片如下,記得打開聲音:

https://youtu.be/edoCG3Bwk24

下一節:3-3d iTunes 搜尋與播放試聽(NavigationStack)