Riproduzione multimediale con AVPlayer
Trasmetti e riproduci contenuti audio e video.
Riproduzione multimediale con AVPlayer è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Swift Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Swift Academy include 4 lezioni in totale.
AVFoundation per i contenuti multimediali
AVFoundation è il framework di Apple per lavorare con contenuti audiovisivi basati sul tempo: riproduzione, acquisizione, modifica ed esportazione.
La classe principale per la riproduzione è AVPlayer.
import AVFoundationAVPlayer e AVPlayerItem
AVPlayer controlla la riproduzione, mentre AVPlayerItem rappresenta il contenuto multimediale riprodotto e ne monitora lo stato. L'elemento si basa su un AVAsset.
let url = URL(string: "https://example.com/video.mp4")!
let item = AVPlayerItem(url: url)
let player = AVPlayer(playerItem: item)Avvio e pausa
Controllare la riproduzione con play(), pause() e seek(to:). La riproduzione inizia dal tempo corrente.
player.play()
// later
player.pause()Visualizzazione dei video
Per mostrare un video in UIKit, ospitare un AVPlayerLayer in una vista. Il livello esegue il rendering dell'output visivo del player.
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = view.bounds
playerLayer.videoGravity = .resizeAspect
view.layer.addSublayer(playerLayer)Osservazione dello stato
Un AVPlayerItem espone uno status. Osservarlo per sapere quando il contenuto multimediale è readyToPlay o quando si è verificato un errore con failed.
let observation = item.observe(\.status) { item, _ in
if item.status == .readyToPlay {
player.play()
}
}Monitoraggio del tempo
Utilizzare addPeriodicTimeObserver per aggiornare l'interfaccia di avanzamento mentre procede la riproduzione. I tempi sono valori CMTime.
let interval = CMTime(seconds: 0.5, preferredTimescale: 600)
player.addPeriodicTimeObserver(forInterval: interval, queue: .main) { time in
let seconds = time.seconds
print("at \(seconds)s")
}Nozioni di base su CMTime
CMTime memorizza il tempo come numero razionale (valore diviso per timescale) per ottenere una precisione al singolo campione. Un timescale di 600 si divide senza resto per le frequenze dei fotogrammi più comuni.
let t = CMTime(seconds: 5, preferredTimescale: 600)
let half = CMTimeMultiplyByFloat64(t, multiplier: 0.5)Posizionamento preciso
seek(to:toleranceBefore:toleranceAfter:) con tolleranza zero consente un posizionamento preciso al singolo fotogramma, al costo di un maggiore lavoro di decodifica.
let target = CMTime(seconds: 30, preferredTimescale: 600)
player.seek(to: target, toleranceBefore: .zero, toleranceAfter: .zero)Rilevare la fine
Osservare AVPlayerItem.didPlayToEndTimeNotification per rilevare il completamento, quindi ripetere la riproduzione, chiudere la schermata o mostrare l'elemento successivo.
NotificationCenter.default.addObserver(
forName: .AVPlayerItemDidPlayToEndTime,
object: item, queue: .main) { _ in
player.seek(to: .zero)
player.play() // loop
}Sessione audio per la riproduzione
Per riprodurre correttamente l'audio, anche in background quando configurato, configurare un AVAudioSession con la categoria appropriata.
let session = AVAudioSession.sharedInstance()
try? session.setCategory(.playback)
try? session.setActive(true)AVQueuePlayer per le playlist
AVQueuePlayer è una sottoclasse di AVPlayer che riproduce in sequenza una coda di elementi: è ideale per playlist e feed video continui.
let queue = AVQueuePlayer(items: [item1, item2, item3])
queue.play()Verifica rapida: AVPlayer
Verificare la propria comprensione della riproduzione con AVPlayer.
Riepilogo: riprodurre contenuti multimediali con AVPlayer
AVPlayer gestisce la riproduzione di un AVPlayerItem basato su un AVAsset; un AVPlayerLayer esegue il rendering del video. Osservare lo status dell'elemento, monitorare l'avanzamento con osservatori periodici di CMTime, eseguire posizionamenti precisi con tolleranza zero e gestire le notifiche di fine riproduzione.
Configurare un AVAudioSession per una corretta riproduzione audio e utilizzare AVQueuePlayer per le playlist.
Domande Frequenti
La lezione «Riproduzione multimediale con AVPlayer» è gratuita?
Sì — il testo completo di «Riproduzione multimediale con AVPlayer» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Swift Academy, passa a CoddyKit PRO. Il corso Swift Academy include 4 lezioni in totale.
Cosa imparerò in «Riproduzione multimediale con AVPlayer»?
Trasmetti e riproduci contenuti audio e video. Eserciti Swift Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Swift Academy?
Non è richiesta alcuna esperienza precedente. Swift Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Riproduzione multimediale con AVPlayer»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Swift Academy?
Sì. Ogni lezione Swift Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Riproduzione multimediale con AVPlayer
- Registrazione audio
- AVAsset e composizione
- Integrazione dei player in SwiftUI