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. |