Videoanzeigen sind ein neues Format, das entwickelt wurde, um die Marken- und Produkterfahrung des Werbetreibenden zu verbessern.
Wie es funktioniert
Platzierungen/Kontext definieren (automatisch, Kategorie, Suche)
Kampagnendetails festlegen: Name, Budget und Laufzeit
Von Verkäufern hochgeladene Videos erfordern die Genehmigung des Marketplace-Administrators.
Videoanforderungen
Länge : 6-20 Sekunden (unter 20s empfohlen)
Formate : MP4 oder MOV
Maximale Größe : 200 MB
Auktionsablauf
Bei einer Auktionsanfrage müssen Marketplaces die Platzierungs-ID senden und können Kontextinformationen (z.B. Kategorie, Schlüsselwörter) einschließen. Die Auktionsantwort gibt die Video-URL zum Rendern zurück.
Beispiel-Auktionsantwort
{
"resultType" : "banners" ,
"winners" : [
{
"rank" : 1 ,
"asset" : [
{
"url" : "https://customer-axfyyvfgsfxowp1c.cloudflarestream.com/6541f123389a4796889166a2b9491f09/manifest/video.m3u8"
}
],
"type" : "vendor" ,
"id" : "972776" ,
"resolvedBidId" : "ChAGjBuGm-lyS6oE7YQebGh-EhABmTSoITB38Z2Nmqd_rVLpGhABmTLlo1V1wJNc17VoVGUKIgoKBjk3Mjc3NhADMJTpbDoBAUAFSAJQx7rhpZMz" ,
"vendorId" : "972776" ,
"campaignId" : "019934a8-2130-77f1-9d8d-9aa77fad52e9"
}
],
"error" : false
}
Die Antwort enthält eine HLS-Manifest-URL (.m3u8), die mit jedem HLS-kompatiblen Videoplayer gerendert werden kann.
Video-Integrationsoptionen
Verwenden Sie Ihren eigenen Videoplayer
Videoanzeigen von Topsort sind mit allen Playern kompatibel, die HLS - und DASH -Formate unterstützen. Hier sind Implementierungsbeispiele für jede Plattform.
Web-Implementierung
< video id = "video-ad" muted autoplay loop playsinline style = "width: 100%; max-width: 640px;" >
< source src = "YOUR_VIDEO_URL_HERE" type = "application/x-mpegURL" >
</ video >
< script src = "https://cdn.jsdelivr.net/npm/hls.js@latest" ></ script >
< script >
// HLS.js für bessere Browser-Unterstützung initialisieren
const video = document . getElementById ( 'video-ad' );
if ( Hls . isSupported ()) {
const hls = new Hls ();
hls . loadSource ( 'YOUR_VIDEO_URL_HERE' );
hls . attachMedia ( video );
} else if ( video . canPlayType ( 'application/vnd.apple.mpegurl' )) {
// Native HLS-Unterstützung (Safari)
video . src = 'YOUR_VIDEO_URL_HERE' ;
}
// Impressions verfolgen (50% sichtbar für 2+ Sekunden)
const observer = new IntersectionObserver (( entries ) => {
entries . forEach ( entry => {
if ( entry . intersectionRatio >= 0.5 ) {
setTimeout (() => {
if ( entry . intersectionRatio >= 0.5 ) {
// Impression melden
window . topsortEvents . reportEvent ({
type: 'impression' ,
resolvedBidId: 'YOUR_RESOLVED_BID_ID'
});
}
}, 2000 );
}
});
}, { threshold: 0.5 });
observer . observe ( video );
// Klicks behandeln
video . addEventListener ( 'click' , () => {
window . topsortEvents . reportEvent ({
type: 'click' ,
resolvedBidId: 'YOUR_RESOLVED_BID_ID'
});
// Zur Verkäufer-/Produktseite navigieren
});
</ script >
iOS-Implementierung (Swift)
import AVKit
import UIKit
class VideoAdView : UIView {
private var player: AVPlayer ?
private var playerLayer: AVPlayerLayer ?
func loadVideo ( url : String , resolvedBidId : String ) {
guard let videoURL = URL ( string : url) else { return }
// Player-Konfiguration
player = AVPlayer ( url : videoURL)
playerLayer = AVPlayerLayer ( player : player)
playerLayer ? . frame = bounds
playerLayer ? . videoGravity = . resizeAspectFill
layer. addSublayer (playerLayer ! )
// Für Autoplay konfigurieren
player ? . isMuted = true
player ? . play ()
// Video in Schleife abspielen
NotificationCenter. default . addObserver (
self ,
selector : #selector (playerDidFinishPlaying),
name : . AVPlayerItemDidPlayToEndTime ,
object : player ? . currentItem
)
// Tap-Geste für Klicks hinzufügen
let tap = UITapGestureRecognizer ( target : self , action : #selector (handleTap))
addGestureRecognizer (tap)
}
@objc private func playerDidFinishPlaying () {
player ? . seek ( to : . zero )
player ? . play ()
}
@objc private func handleTap () {
// Klick-Event über Topsort SDK melden
}
}
Android-Implementierung (Kotlin)
import com.google.android.exoplayer2.ExoPlayer
import com.google.android.exoplayer2.MediaItem
import com.google.android.exoplayer2.Player
class VideoAdView (context: Context ) : PlayerView ( context ) {
private var exoPlayer: ExoPlayer ? = null
fun loadVideo (url: String , resolvedBidId: String ) {
exoPlayer = ExoPlayer. Builder (context). build (). apply {
setMediaItem (MediaItem. fromUri (url))
repeatMode = Player.REPEAT_MODE_ONE // Schleife
volume = 0f // Stummgeschaltet für Autoplay
prepare ()
play ()
}
player = exoPlayer
useController = false // Steuerelemente ausblenden
// Klicks behandeln
setOnClickListener {
// Klick über Topsort SDK melden
}
}
}
Für detaillierte Player-Dokumentation siehe:
Reporting und Metriken
Topsort verfolgt Video-Impressions und -Klicks mit banners.js .
Impressions-Tracking
Sichtbare Impression (IAB/MRC-Standard) : 50% der Pixel sichtbar für 2+ aufeinanderfolgende Sekunden
Engagement-Impression : Video für mindestens 5 Sekunden angesehen
Verwenden Sie die resolvedBidId aus der Auktionsantwort beim Melden von Events
Attributions- und Abrechnungsstandards
Gemäß den IAB/MRC Retail Media Measurement Guidelines verwendet Topsort Sichtbare Impressions (IAB/MRC-Standard) für:
Ergebniszuordnung : Nur Impressions, die MRC-Sichtbarkeitsstandards erfüllen (50% der Pixel sichtbar für 2+ Sekunden), sind für Attribution berechtigt
Kampagnenabrechnung : Werbetreibende werden basierend auf sichtbaren Impressions abgerechnet
Leistungsberichte : Primäre Metriken und ROAS-Berechnungen basieren auf sichtbaren Impressions
Hinweis : Engagement-Impressions (5+ Sekunden angesehen) sind als zusätzliche Engagement-Metrik verfügbar, werden aber NICHT für Attributions- oder Abrechnungszwecke verwendet.
Klick-Tracking
Klick-Events melden, wenn Benutzer mit dem Video interagieren
resolvedBidId einschließen, um Klicks korrekt zuzuordnen
Nach Meldung zur entsprechenden Verkäufer-/Produktseite navigieren
Wichtige Überlegungen
Autoplay-Anforderungen : Videos müssen für Autoplay auf den meisten Browsern stummgeschaltet sein
Schleifenwiedergabe : Videos sollten kontinuierlich in Schleife abgespielt werden, wenn sichtbar
Mobile Optimierung : playsinline-Attribut verwenden, um Vollbild auf iOS zu vermeiden
Leistung : Lazy Loading für Videos unter dem Fold in Betracht ziehen
Marketplaces können auch benutzerdefinierte Impressions- und Klick-Reporting-Logik nach ihren Bedürfnissen konfigurieren.
Häufig gestellte Fragen
Was sind die empfohlenen Upload-Einstellungen für Video-Uploads?
MP4-Container, AAC-Audio-Codec, H264-Video-Codec, 30 Bilder pro Sekunde oder weniger
Moov-Atom muss am Anfang der Datei sein (Fast Start)
H264 Progressive Scan (kein Interlacing)
H264 High Profile
Geschlossener GOP
Inhalt sollte mit derselben Bildrate kodiert und hochgeladen werden, mit der er aufgenommen wurde
Audio mono oder stereo (Stream mischt Audiospuren mit mehr als 2 Kanälen zu Stereo)
Auf welchen Browsern funktioniert Stream?
Sie können den Stream-Player auf folgenden Plattformen einbetten:
Browser
Version
Chrome
Unterstützt ab Chrome Version 88+
Firefox
Unterstützt ab Firefox Version 87+
Edge
Unterstützt ab Edge 89+
Safari
Unterstützt ab Safari Version 14+
Opera
Unterstützt ab Opera Version 75+
Mobile Plattform
Version
Chrome auf Android
Unterstützt auf Chrome 90
UC Browser auf Android
Unterstützt auf Version 12.12+
Samsung Internet
Unterstützt auf 13+
Safari auf iOS
Unterstützt auf iOS 13.4+. Geschwindigkeitsauswahl außerhalb des Vollbilds unterstützt.
Zuletzt aktualisiert: 2025-11-18