Klient-side annonceindsættelse (CSAI) med SCTE-35-markørparsing og integration af afspillere på flere platforme
En videostreamingplatform skulle implementere klient-side annonceindsættelse (CSAI) på tværs af web-, mobil- og connected TV-apps – hvilket muliggjorde personaliserede annonceringer på enhedsniveau med fuld support for annonceinteraktion (klikbare overlays, følgebannere, skip-knapper), som server-side indsættelse ikke kan tilbyde.
Diskuter Dit Projekt
Udfordringen
Platformen brugte tidligere udelukkende SSAI (server-side ad insertion), som håndterede monetarisering godt, men havde betydelige begrænsninger for interaktive annonceoplevelser:
- SSAI-sammenføjede annoncer kunne ikke understøtte klikbare overlays, følgebannere eller interaktive annonceenheder
- Ingen mulighed for at spore klient-side annoncebegivenheder (kvartilsfremskridt, synlighed, klikrate), som kræves af premium annoncekøbere
- Connected TV-platforme (Roku, Fire TV, Apple TV) forventede CSAI til deres native annonce-frameworks og certificeringskrav
- SCTE-35-markører i HLS/DASH-manifestfiler skulle parses på klienten, men hver player SDK håndterede cue-begivenheder forskelligt
- Ad pod-styring (udfyldning af annoncepauser med flere annoncer) krævede klient-side orkestrering
- Annonceblokeringsdetektion og fallback-logik var nødvendig for at beskytte omsætningen på webplatforme
- Forhåndsindlæsning af annoncer uden at afbryde indholdsbufferen krævede omhyggelig administration af afspillerens livscyklus
Vores Løsning
Vi udviklede et cross-platform CSAI-framework med et forenet annonceorkestreringslag, der parser SCTE-35-markører fra HLS/DASH-manifestfiler, kommunikerer med VAST/VMAP-annoncenservere og styrer annoncens afspilningslivscyklus på tværs af web (Video.js/Shaka), iOS (AVPlayer), Android (ExoPlayer) og connected TV-afspillere.
Arkitektur
- Indholdslevering: HLS/DASH-streams med SCTE-35-markører via AWS MediaPackage + CloudFront
- Annoncedecisionsserver: Google Ad Manager (GAM) / SpotX med VAST 4.2 og VMAP-support
- Webafspiller: Video.js med brugerdefineret SCTE-35 cue-parser og Google IMA SDK-integration
- iOS-afspiller: AVPlayer med
AVDateRangeMetadataGroup-listener og IMA iOS SDK - Android-afspiller: ExoPlayer med
MetadataOutput-listener og IMA Android SDK - Connected TV: Platform-native afspillere (Roku RAF, Fire TV IMA, Apple TV AVKit) med annonce-framework-adaptere
- Annonceanalyse: Brugerdefineret event-pipeline til sporing af visninger, kvartiler, fuldførelser, klik og synlighed
- Fallback: Levering af slate/husannoncer, når annoncefyldning ikke er tilgængelig, eller en annonceblokker registreres
SCTE-35 Klient-Side Parsing
HLS Manifestmarkører
SCTE-35-signaler vises i HLS-manifestfiler i to formater, begge parses af klienten:
EXT-X-DATERANGE (HLS v7+)- Afspilleren lytter efter
#EXT-X-DATERANGE-tags medSCTE35-OUT- ogSCTE35-IN-attributter - Attributter inkluderer
PLANNED-DURATIONfor længden af annoncepausen ogIDfor hændelseskorrelation - Foretrukket format for moderne afspillere (AVPlayer, ExoPlayer, Shaka)
#EXT-X-CUE-OUT:DURATION=markerer starten på en annoncepause#EXT-X-CUE-INmarkerer tilbagevenden til indhold- Understøttes for bagudkompatibilitet med ældre afspillere og encodere
DASH Manifestmarkører
- SCTE-35-signaler vises som
-elementer i DASH MPD medschemeIdUri="urn:scte:scte35:2013:xml" -elementer indeholderpresentationTime,durationog base64-encodet SCTE-35 binær payload- Shaka Player og ExoPlayer parser disse nativt via deres event listener API'er
Markørbehandlingsflow
- Detektion — Afspillerens metadata-listener detekterer SCTE-35 cue-event under manifest-parsing
- Ekstraktion — Pausevarighed, event ID og segmenteringstype udtrækkes fra markøren
- Annonceanmodning — VAST/VMAP-anmodning sendes til annoncebeslutningsserver med målretningsparametre (indholds-ID, genre, enhedstype, brugersegment, geografi)
- Pod-planlægning — Annoncersvar parses for at opbygge en annoncepod (ordnet liste over annoncekreativer, der fylder pausevarigheden)
- Forhåndsindlæsning — Annoncekreativer forhåndsindlæses under indholdsafspilning for at eliminere latenstid ved annoncepausens start
- Pause og Skift — Indholdsafspilning pauses ved cue-punktet, afspilleren skifter til annonceafspilning
- Annonceafspilning — Annoncer afspilles sekventielt med kvartilssporing, visning af følgebanner og håndtering af klikrate
- Genoptagelse — Efter pod-afslutning genoptages indholdsafspilning fra det nøjagtige frame efter cue-punktet
Platforms-Specifikke Implementeringer
Web (Video.js + IMA SDK)
- Brugerdefineret Video.js-plugin opfanger
#EXT-X-DATERANGE-metadata viatextTrackcue change-events - Google IMA HTML5 SDK styrer VAST-annonceanmodninger, annonceafspilning og følgebanner-rendering
- Annoncecontainer-overlay placeret over videoelementet for at understøtte klikrate og skip-knap
- Annonceblokeringsdetektion via canary-anmodning – falder tilbage til husannoncer eller genoptagelse af indhold ved detektion
- Preroll-, midroll- og postroll-support via VMAP eller manuel cue-point-planlægning
iOS (AVPlayer + IMA SDK)
AVPlayerItem.navigationMarkerGroupsogAVDateRangeMetadataGroupbruges til at detektere SCTE-35-cuesAVPlayerItemMetadataOutput-delegate udløses ved hver cue-event med parset timing og payload- Google IMA iOS SDK håndterer VAST-anmodning og annonceafspilning i en separat
AVPlayer-instans - Picture-in-Picture (PiP) pauses under annoncepauser ifølge platformens annoncepolitik
- Baggrundslyd håndteres – annoncer afspilles ikke i baggrundstilstand
Android (ExoPlayer + IMA SDK)
Player.Listener.onMetadata()medMetadataOutputopfanger SCTE-35-events fra HLS/DASH- Google IMA Android SDK integreret via ExoPlayer's
ImaAdsLoader-udvidelse - Annonceafspilning bruger en separat
MediaSourcefor at undgå at forurene indholdsbufferen - Håndterer Activity lifecycle – annoncetilstand bevares på tværs af konfigurationsændringer og baggrundskørsel
- Android TV og mobil deler den samme annoncelogik med UI-lags-tilpasninger
Connected TV-platforme
Roku (RAF — Roku Ad Framework)- Rokus native RAF-bibliotek parser SCTE-35-markører direkte fra HLS-manifestfiler
RAF.setAdUrl()konfigureret med VAST-endpoint; RAF håndterer annonceanmodning, pod-opbygning og afspilning- Understøttelse af følgebannere via RAF's
renderStitchedAd- ogrenderTrackingEvent-callbacks - Roku-certificering kræver RAF-anvendelse – brugerdefinerede annonceafspillere afvises under gennemgang
- Bruger Android ExoPlayer + IMA SDK-implementering tilpasset Fire TV's Leanback UI
- D-pad-navigation til skip-knap og "Læs mere"-klikrate på annonceoverlays
- Fire TV Ad ID bruges til annoncemålretning i VAST-anmodninger
AVPlayerViewControllermedinterstitialTimeRangesfor native UI-indikatorer for annoncepauser- SCTE-35-cues parses via
AVPlayerItemMetadataCollector - Annonceafspilning styres i en separat
AVQueuePlayerfor klar adskillelse mellem indhold og annoncer - tvOS remote click handler til interaktive annonceelementer
Annoncepod-styring
- Pod-fyldning — Flere VAST-annoncer samles for at udfylde den signalerede pausevarighed
- Vandfald — Hvis den primære annonce-server returnerer ingen fyldning, forespørges sekundære/tertiære efterspørgselskilder sekventielt
- Varighedstilpasning — Pod-bygger vælger annoncekombinationer, der passer inden for pausevarigheden (±0,5s tolerance)
- Deduplikering — Samme annoncekreativ vises ikke to gange i en enkelt pod
- Frekvensbegrænsning — Caps pr. bruger og pr. session håndhæves på klient-siden for at undgå annoncetræthed
- Bumpering — Korte bumper-kreativer ("Vi er straks tilbage" / "Velkommen tilbage") omslutter annoncepods
Annoncehændelsessporing og -analyse
- Standard VAST-begivenheder —
impression,start,firstQuartile,midpoint,thirdQuartile,complete,skip,clickThrough - Synlighed — MOAT/IAS synlighedspixels udløses baseret på annonce-viewport-synlighed og varighedstærskler
- Brugerdefinerede begivenheder — App-niveau-events (start/slut af annoncepause, pod-fyldningsrate, preload-timing, fallback udløst)
- Server-pipeline — Klienten sender events til en letvægts event-opsamler, som distribuerer til GAM, MOAT og det interne analyse-warehouse
- Afstemning — Server-side log-afstemning med klient-side events til detektion af uoverensstemmelser
Håndtering af annonceblokkere (Web)
- Detektion — Canary VAST-anmodning til et kendt annoncedomæne; timeout eller blokering indikerer annonceblokker
- Fallback-strategi — Vis husannoncer eller salgsfremmende trailere fra førsteparts CDN-domæne
- Indholdsfiltrering — Valgfri soft gate: bed brugeren om at whiteliste siden, før indholdet afspilles
- Analyse — Detektionsrate for annonceblokker spores pr. browser, geografi og side
Nøglefunktioner
- Cross-Platform CSAI — Forenet annonceindsættelse på tværs af web, iOS, Android, Roku, Fire TV og Apple TV
- SCTE-35 Klient-parsing — HLS
EXT-X-DATERANGE,CUE-OUT/INog DASHEventStreamparsing - Interaktive annoncer — Klikbare overlays, følgebannere og skip-knapper på alle platforme
- Ad Pod-orkestrering — Udfyldning af multi-annoncepauser med vandfald, varighedstilpasning og deduplikering
- Forhåndsindlæsning — Annoncekreativer forhåndsindlæses under indholdsafspilning for annonceovergange uden latenstid
- Synlighedssporing — MOAT/IAS-integration for synlighedskrav fra premium annoncekøbere
- Connected TV-kompatibilitet — Roku RAF, Fire TV IMA og Apple TV AVKit-integrationer, der opfylder certificeringskravene
- Annonceblokker-modstandsdygtighed — Detektion og fallback til førsteparts husannoncer på web
Resultater
Teknologistak
caseStudyDetail.more Casestudier
Udforsk flere af vores tekniske implementeringer
SCTE-35 Reklamemarkør-signalering & Pipeline for indsættelse af medietrailere
Et streamingmedieselskab havde brug for en robust, automatiseret pipeline til at injicere SCTE-35 reklamemarkører i live- og VOD-streams, samt muligheden for at indsætte promoverende trailere (pre-roll, mid-roll og post-roll) på præcist timede positioner — hvilket muliggjorde monetarisering på tværs af FAST channels, live events og on-demand indholdsbiblioteker.
AWS Media Services til FAST-kanalstreaming over SRT
Et mediefirma skulle etablere pålidelige bidragsfeeds med lav latenstid til deres FAST-kanaler ved hjælp af Secure Reliable Transport (SRT) protokollen – hvilket muliggjorde indtag af indhold af høj kvalitet fra fjerntliggende studier, cloud playout-systemer og syndikeringspartnere over uforudsigelige internetforbindelser.
Ofte stillede spørgsmål
MicrocosmWorks implemented a manifest parser that extracts EXT-X-DATERANGE tags containing base64-encoded SCTE-35 splice_info_section data, decodes the splice commands, and triggers the ad decision request to the VAST/VMAP ad server with the appropriate break duration. The parser handles both time_signal and splice_insert command types across live and VOD manifests.
MicrocosmWorks built a shared ad playback SDK with platform-specific adapters for AVPlayer on iOS, ExoPlayer on Android, hls.js on web, and native players on Roku and Fire TV. The SDK normalizes ad lifecycle events like impression, quartile tracking, and completion across all platforms, ensuring unified reporting regardless of the playback device.
MicrocosmWorks implemented a timeout and fallback strategy where the player waits a maximum of 3 seconds for an ad server response before playing a default slate or skipping to the next content segment. The SDK also pre-fetches upcoming ad break VAST responses during content playback to minimize latency at the actual break point.
MicrocosmWorks integrated Open Measurement SDK (OM SDK) for viewability verification compatible with MOAT, IAS, and DoubleVerify, and the tracking implementation follows IAB VAST 4.2 specifications for impression counting and quartile events. The system also supports IAB's Video Ad Serving Template measurement guidelines for accurate ad completion rate reporting.
MicrocosmWorks delivers ad technology implementations at rates of $30-$50/hr, with a full CSAI system including SCTE-35 parsing, VAST/VMAP integration, and multi-platform player SDKs for iOS, Android, web, and CTV typically requiring 600-900 development hours. Each additional platform adapter adds approximately 80-120 hours to the base implementation.
Klar til at Transformere Din Virksomhed?
Lad os drøfte, hvordan vi kan anvende lignende løsninger til dine udfordringer.