Swift Academy · Oppitunti

Median toistaminen AVPlayerilla

Suoratoista ja toista ääni- ja videosisältöä.

Oppitunti 1/413 vaihetta

Median toistaminen AVPlayerilla on ilmainen Swift Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Swift Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Swift Academy-kurssilla on yhteensä 4 oppituntia.

AVFoundation ja media

AVFoundation on Applen kehys aikapohjaisen audiovisuaalisen median käsittelyyn: toistoon, kaappaukseen, editointiin ja vientiin.

Toiston keskeinen luokka on AVPlayer.

import AVFoundation

AVPlayer ja AVPlayerItem

AVPlayer ohjaa toistoa, kun taas AVPlayerItem edustaa toistettavaa mediaa ja seuraa sen tilaa. AVAsset toimii itemin perustana.

let url = URL(string: "https://example.com/video.mp4")!
let item = AVPlayerItem(url: url)
let player = AVPlayer(playerItem: item)

Toiston käynnistäminen ja keskeyttäminen

Ohjaa toistoa metodeilla play(), pause() ja seek(to:). Toisto alkaa nykyisestä ajasta.

player.play()
// later
player.pause()

Videon näyttäminen

Voit näyttää videon UIKitissa sijoittamalla AVPlayerLayer-tason näkymään. Taso piirtää toistimen visuaalisen sisällön.

let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = view.bounds
playerLayer.videoGravity = .resizeAspect
view.layer.addSublayer(playerLayer)

Tilan tarkkaileminen

AVPlayerItem ilmoittaa status-tilansa. Tarkkaile sitä, jotta tiedät, milloin media on readyToPlay-tilassa tai milloin toisto on failed.

let observation = item.observe(\.status) { item, _ in
    if item.status == .readyToPlay {
        player.play()
    }
}

Ajan seuraaminen

Käytä addPeriodicTimeObserver-metodia edistymisen käyttöliittymän päivittämiseen toiston edetessä. Ajat ilmoitetaan CMTime-arvoina.

let interval = CMTime(seconds: 0.5, preferredTimescale: 600)
player.addPeriodicTimeObserver(forInterval: interval, queue: .main) { time in
    let seconds = time.seconds
    print("at \(seconds)s")
}

CMTime-perusteet

CMTime tallentaa ajan rationaalilukuna (arvo ja aikaskaala), mikä mahdollistaa näytetarkan tarkkuuden. Aikaskaala 600 jakautuu siististi yleisiin kuvataajuuksiin.

let t = CMTime(seconds: 5, preferredTimescale: 600)
let half = CMTimeMultiplyByFloat64(t, multiplier: 0.5)

Tarkka kohtaan siirtyminen

seek(to:toleranceBefore:toleranceAfter:) nollatoleranssilla mahdollistaa ruututarkan siirtymisen, mutta vaatii enemmän dekoodausta.

let target = CMTime(seconds: 30, preferredTimescale: 600)
player.seek(to: target, toleranceBefore: .zero, toleranceAfter: .zero)

Toiston päättyminen

Tarkkaile ilmoitusta AVPlayerItem.didPlayToEndTimeNotification havaitaksesi toiston päättymisen. Sen jälkeen voit aloittaa toiston alusta, sulkea näkymän tai näyttää seuraavan kohteen.

NotificationCenter.default.addObserver(
    forName: .AVPlayerItemDidPlayToEndTime,
    object: item, queue: .main) { _ in
    player.seek(to: .zero)
    player.play() // loop
}

Audioistunto toistoa varten

Jotta ääni toistuu oikein ja jatkuu tarvittaessa taustalla, määritä AVAudioSession oikealla kategorialla.

let session = AVAudioSession.sharedInstance()
try? session.setCategory(.playback)
try? session.setActive(true)

AVQueuePlayer soittolistoja varten

AVQueuePlayer perii AVPlayer-luokan ja toistaa kohteet jonossa peräkkäin. Se sopii erinomaisesti soittolistoihin ja jatkuviin videovirtoihin.

let queue = AVQueuePlayer(items: [item1, item2, item3])
queue.play()

Pikatarkistus: AVPlayer

Testaa, miten hyvin ymmärrät AVPlayer-toiston.

Kertaus: median toistaminen AVPlayerilla

AVPlayer ohjaa AVAsset-objektiin perustuvan AVPlayerItem-kohteen toistoa, ja AVPlayerLayer piirtää videon. Tarkkaile kohteen status-tilaa, seuraa edistymistä ajastetuilla CMTime-tarkkailijoilla, siirry tarkasti haluttuun kohtaan nollatoleranssilla ja käsittele toiston päättymisestä ilmoittavat tapahtumat.

Määritä AVAudioSession äänen oikeaa toistoa varten ja käytä soittolistoihin AVQueuePlayer-luokkaa.

Aloita maksutta

Opi Swift tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
122
Oppitunnit
409

Usein kysytyt kysymykset

Onko oppitunti ”Median toistaminen AVPlayerilla” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Swift Academy-oppimispolun 3 oppituntia, myös oppitunnin “Median toistaminen AVPlayerilla”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Swift Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Median toistaminen AVPlayerilla”?

Suoratoista ja toista ääni- ja videosisältöä. Harjoittelet Swift Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Swift Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Swift Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Median toistaminen AVPlayerilla”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Swift Academy-oppitunnilla?

Kyllä. Jokainen Swift Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Median toistaminen AVPlayerilla
  2. Äänen tallentaminen
  3. AVAsset ja kompositio
  4. Soittimien upottaminen SwiftUIhin
← Takaisin: Swift Academy