-
Explore dynamic pre-rolls and mid-rolls in HLS
Learn how you can create seamless transitions between advertisements and your HLS streams. We'll show you how to incorporate HLS tags and AVFoundation APIs to create media experiences that move easily between your primary content and mid-rolls, and provide best practices for playing these streams in your app.
Recursos
Videos relacionados
WWDC22
WWDC21
-
Buscar este video…
-
-
9:50 - AVPlayerInterstitialEvent
class AVPlayerInterstitialEvent { var primaryItem: AVPlayerItem? { get } var identifier: String { get } var time: CMTime { get } var date: Date? { get } var templateItems: [AVPlayerItem] { get } var restrictions: AVPlayerInterstitialEvent.Restrictions { get } var resumptionOffset: CMTime { get } var playoutLimit: CMTime { get } var userDefinedAttributes: [AnyHashable : Any] { get } } -
10:58 - Observing server inserted events
// Client observes server-side interstitial playback let player = AVPlayer(url: movieURL) // movieURL has EXT-X-DATERANGE ad tags let observer = AVPlayerInterstitialEventMonitor(primaryPlayer: player) NotificationCenter.default.addObserver( forName: AVPlayerInterstitialEventMonitor.currentEventDidChangeNotification, object: observer, queue: OperationQueue.main) { notification_ in self.updateUI(observer.currentEvent, observer.interstitialPlayer) } -
11:40 - AVPlayerInterstitialEventController
class AVPlayerInterstitialEventController : AVPlayerInterstitialEventMonitor { var events: [AVPlayerInterstitialEvent]! func cancelCurrentEvent(withResumptionOffset resumptionOffset: CMTime) } -
12:01 - Client schedules ad pod
// Client inserted events // Client schedules an ad pod at 10s into primary asset let player = AVPlayer(url: movieURL) // no ads in primary asset let controller = AVPlayerInterstitialEventController(primaryPlayer: player) let adPodTemplates = [AVPlayerItem(url: ad1URL), AVPlayerItem(url: ad2URL)] let event = AVPlayerInterstitialEvent( primaryItem: player.currentItem, time: CMTime(seconds: 10, preferredTimescale: 1), templateItems: adPodTemplates, restrictions: [], resumptionOffset: .zero, playoutLimit: .invalid) controller.events = [event] player.currentItem.translatesPlayerInterstitialEvents = true let vc = AVPlayerViewController() vc.player = player player.play()
-