Eigene Videoauslieferung mit Untertiteln
534
Videos mit Ton automatisch ausgewertet
- Symfony 8.1
- PHP 8.4+
- htmx
- video.js 10
- ffmpeg (HLS)
- faster-whisper
- Caddy
Den Ausschlag für einen eigenen Video-Server geben die Vorteile, nicht die Kosten: keine Verbindung zu zusätzlichen Videoplattformen, auch nach dem Klick nicht, anders als bei YouTube keine Werbung und keine Empfehlungen anderer Kanäle, Player und Daten in eigener Hand; die Serverrechnung bleibt klein, dazu kommt Arbeitszeit.
Was kostet es, Videos selbst auszuliefern, statt sie bei YouTube, Vimeo, Bunny Stream oder Cloudflare Stream abzulegen? Und was bekommt man dafür? Gemessen haben wir am 12. Oktober 2026: 13 frei lizenzierte Clips von ZDF und 3sat mit zusammen 34 Minuten, umgewandelt mit den Einstellungen eines Kundenprojekts, sieben Arten, ein Video einzubetten, und einen Lasttest auf zwei Cloud-Servern. Dazu kommt eine Gegenprobe aus dem Projekt mit 546 Videos. Messplan, Abweichungen, Ergebnisse und Tabellen liegen offen bei uns.
Ein eigener Server kostet einen fast festen Betrag; Bunny Stream und Cloudflare Stream rechnen nach Menge ab, Vimeo nach Tarif. In unseren drei Szenarien mit 5.000 bis 500.000 Abrufen im Monat (ein Abruf ist ein gestartetes Video) kostet der eigene Server 20,56 € bis 63,40 € im Monat für Server und Auslieferung, ohne Arbeitszeit, Originalarchiv und Backups; Bunny Stream kostet als günstigste bezahlte Plattform im angenommenen Qualitätsmix 0,93 € bis 92,92 €, im Volume-Netz bis 49,85 €. Um solche Beträge geht es selten. Entscheidend ist, was man bekommt:
Wer selbst hostet, übernimmt drei Aufgaben der Plattform: das Umwandeln des Originals in Qualitätsstufen (hier 360p bis 1080p in H.264, in Stücken von 6 s als HLS), die Auslieferung über einen gewöhnlichen Webserver und den Player, der je nach Verbindung die Stufe wählt. Dazu gehört ein Bitraten-Deckel: Er begrenzt die Video-Höchstbitrate anhand der Quelle, mit einer Untergrenze von 300 kbit/s. Das kann größere Ausgabedateien vermeiden, garantiert es aber nicht und kann Bildqualität kosten.
Verglichen wird die Auslieferung öffentlicher, aufgezeichneter Videos. Die Tabelle ist ein Kostenmodell bei gleichen angenommenen Datenmengen, kein gemessener Plattformvergleich bei gleicher Bildqualität. Für Bunny und Vimeos Traffic setzen wir die Dateigrößen unseres H.264-Encodings an; deren tatsächliche Qualitätsstufen, Bitraten und Dateigrößen haben wir nicht gemessen. Bunny verwendet beispielsweise 480p statt unserer 540p (Encoding-Dokumentation). Cloudflare rechnet unabhängig von der Dateigröße nach Minuten ab.
| Anbieter | S: 50 Videos, 5.000 Abrufe pro Monat | M: 500 Videos, 50.000 Abrufe pro Monat | L: 5.000 Videos, 500.000 Abrufe pro Monat |
|---|---|---|---|
| YouTube | 0,00 € | 0,00 € | 0,00 € |
| Vimeo Studio (Firmen) | 357,75 € | 357,75 € | nur auf Anfrage (Custom oder Enterprise) |
| Bunny Stream, Standard-Netz | 0,93 € | 9,29 € | 92,92 € |
| Bunny Stream, Volume-Netz | 0,89 € | 4,99 € | 49,85 € |
| Cloudflare Stream | 11,18 € | 76,02 € | 737,86 € |
| Eigener Server | 20,56 € | 24,34 € | 63,40 € |
| Eigener Server mit CDN | 21,46 € | 32,95 € | 149,54 € |
Modell ohne Arbeitszeit, Originalarchiv, Backups und Speicherreserve; keine Videodaten vor dem Start, keine zusätzlichen Übertragungen durch Pufferung oder Wiederholungen. Netto-Listenpreise, Stand 12. Oktober 2026 (Vimeo Studio 13. Oktober 2026); US-Dollar umgerechnet mit 1 € = 1,1181 USD (EZB-Referenzkurs vom 12. Oktober 2026). Vimeo: Studio für kleine und mittlere Firmen (400 US-Dollar im Monat bei jährlicher Zahlung, 36 TB im Jahr), darüber nur auf Anfrage. Vimeo kann Ausnahmen zulassen; Alttarife können vorübergehend fortbestehen. Ein eigener Server ersetzt die Teamfunktionen und den Support dieses Pakets nicht.
Die Szenarien sind Annahmen, keine Kundendaten: je Video 3 Minuten, im Mittel zu 50 % angesehen, 5 % neue Videos im Monat. Für diese Basisrechnung nehmen wir an: keine Videodaten vor dem Start, ausgelieferte Dauer gleich angesehener Dauer, keine zusätzlichen Übertragungen durch Vorpuffern oder erneute Downloads. Die Tabelle beschreibt einen Monat mit diesem Bestand, keinen Jahresverlauf des wachsenden Archivs.
Der eigene Server ist in der Grafik fast waagerecht, Bunny Stream steigt vom Mindestbetrag an mit jedem Abruf. Die Linien kreuzen sich unter unseren Annahmen im Standard-Netz bei etwa 137.000 Abrufen im Monat (je nach Anteil gesehen 69.000 bis 275.000), im Volume-Netz bei etwa 275.000. In unseren Szenarien geht es dabei auf beiden Seiten um kleine Beträge, im Szenario M 9,29 € oder 4,99 € gegen 24,34 € im Monat. Ins Gewicht fallen Cloudflare Stream bei vielen Abrufen (Szenario L: 737,86 €) und Vimeo für Firmen.
Wie stark der Qualitätsmix zählt: Werden im großen Szenario alle Videos in 1080p ausgeliefert, steigt Bunny Volume von 49,85 € auf 92,07 € im Monat; der eigene Server liegt im Kostenmodell bei 63,40 €. Die Reihenfolge kehrt sich also um. Auch diese Variante setzt unsere gemessenen Dateigrößen an.
Was zusätzlich anfällt: Arbeitszeit, Originalarchiv, separate Backups und deren Wiederherstellung sowie Speicherreserve sind nicht eingepreist. Für eine Gesamtrechnung kommen zur Infrastruktur die Einrichtungskosten, verteilt auf die geplante Nutzungsdauer, und der monatliche Betriebsaufwand hinzu. Plattformfunktionen wie Redaktion, Untertitelprüfung, Teamverwaltung oder detaillierte Nutzungsstatistiken brauchen beim Selbsthosten eigene Lösungen, soweit sie benötigt werden.
Für das Projekt schätzen wir: Installation und Inbetriebnahme je nach Größe und Setup etwa 4–8 Stunden einmalig, laufender Betrieb etwa 2–4 Stunden pro Monat (eine Einschätzung, keine Messung); rechnen Sie mit Ihrem Stundensatz.
| Server | Preis pro Monat | vCPU | RAM (GB) | gleichzeitige Zuschauer, Qualitätsmix | Gbit/s | CPU-Last | Segment-Ladezeit p95 | gleichzeitige Zuschauer, alle in 1080p |
|---|---|---|---|---|---|---|---|---|
| CPX22 | 19,99 € | 2 | 4 | 2.400 | 3,99 | 79 % | 45 ms | mindestens 1.600 |
| CPX32 | 35,99 € | 4 | 8 | mindestens 3.200 | 5,43 | 53 % | 14 ms | mindestens 1.600 |
CPX22, alle in 1080p: Untergrenze, Ursache offen (höchste CPU-Last 89 %, Netzprüfung ohne TLS 13,5 Gbit/s). CPX32, beide Reihen: Untergrenze, Ursache offen (höchste CPU-Last 57 %, Netzprüfung ohne TLS 12,7 Gbit/s). Untergrenze: Kein anderer Server trug die Stufe, an der die Reihe einbrach. Labormessung im Rechenzentrum (Hetzner, fsn1), ohne den Weg über das Internet. Die Dateien passten in den Arbeitsspeicher; die Kapazität eines großen Bestands auf einem Volume wurde nicht gemessen.
Der CPX22 schaffte im Mix der Qualitätsstufen 2.400 Zuschauer bei 79 % Prozessorlast; die nächste Stufe trug nur der größere CPX32. Drei der vier Reihen endeten bei etwa 5,4 Gbit/s, Ursache offen; echte Player laden zudem beim Start mehr auf einmal. Als Planungszahl taugen die Werte deshalb nicht. Die angenommenen Spitzen der Szenarien liegen darunter; das ersetzt keinen Test des späteren Aufbaus.
Die Testdateien passten in den Arbeitsspeicher, während die Kostenrechnung den Bestand auf ein Volume legt. Hetzner nennt dafür bis zu 200 MB/s dauerhaften Durchsatz (Volume-Dokumentation). Bei selten angefragten, nicht zwischengespeicherten Videos kann der Speicher früher begrenzen. Gleichzeitiges Encoding, Zugriffsprotokollierung und die Netzwerkwege zu den Zuschauern müssen ebenfalls im späteren Aufbau geprüft werden.
| Stufe | MB je Minute | Mbit/s | GB je Stunde | MB je Minute ohne Deckel |
|---|---|---|---|---|
| 360p | 4,2 | 0,56 | 0,25 | 4,2 |
| 540p | 8,2 | 1,09 | 0,49 | 8,2 |
| 720p | 12,8 | 1,71 | 0,77 | 12,8 |
| 1080p | 25,4 | 3,39 | 1,53 | 25,4 |
Gemessen an 13 Testclips mit zusammen 34 Minuten; Encoding wie im Projekt (H.264, HLS).
Eine Minute belegt in 1080p 25,4 MB, in 360p 4,2 MB; gespeichert werden alle Stufen, ausgeliefert nur die gewählte. Das Umwandeln dauerte auf vier Kernen das 0,78-Fache der Videolänge (Richtwert vom Desktop), für wenige neue Videos im Monat unkritisch.
| Clips | Anzahl | Median | mittlere Hälfte | größer als das Original |
|---|---|---|---|---|
| Testclips, mit Deckel | 13 | 0,40 | 0,27–0,52 | 0,0 % |
| Testclips, ohne Deckel | 13 | 0,40 | 0,27–0,52 | 0,0 % |
| Projekt, alle Videos, mit Deckel | 546 | 0,77 | 0,67–0,87 | 0,5 % |
| Projekt, Stichprobe, mit Deckel | 60 | 0,90 | 0,83–0,93 | 1,7 % |
| Projekt, Stichprobe, ohne Deckel | 60 | 1,06 | 0,94–1,17 | 63,3 % |
Projekt: Stand 24. September 2026, Stichprobe der Videos, bei denen der Deckel greift.
Der Deckel kann wirken, wo die Quelle sparsam kodiert ist; bei den Testclips änderte er nichts. Im Projekt griff er bei 39 % der Videos. In einer Stichprobe dieser Videos wäre die oberste Stufe ohne Deckel bei 63 % größer geworden als das Original, mit Deckel nur bei 1,7 %. Ganz ausgeschlossen ist eine größere Datei damit nicht.
| Einbettung | Daten vor dem Klick (kB) | fremde Hosts vor dem Klick | Cookies vor dem Klick | Einträge im Browser-Speicher vor dem Klick | weitere fremde Hosts nach dem Klick | TBT mobil |
|---|---|---|---|---|---|---|
| Seite ohne Video | 1 | 0 | 0 | 0 | 0 | 0 ms |
| Eigener Player | 165 | 0 | 0 | 0 | 0 | 228 ms |
| YouTube als Fassade | 105 | 1 | 0 | 0 | 7 | 0 ms |
| YouTube (youtube-nocookie) | 1.244 | 7 | 0 | 3 | 1 | 0 ms |
| YouTube | 1.235 | 9 | 5 | 4 | 1 | 0 ms |
| Vimeo (dnt=1) | 548 | 4 | 3 | 1 | 0* | 0 ms |
| Bunny Stream | 4.471 | 17 | 0 | 2 | 11 | 0 ms |
| Cloudflare Stream | 411 | 3 | 0 | 0 | 0 | 0 ms |
* Vimeo (dnt=1): spielte im Testbrowser nicht ab (vermutlich Kopierschutz, dem Browser fehlt Widevine); die Zahl nach dem Klick ist eine Untergrenze. Fremde Hosts: Hostnamen außerhalb der eigenen Seite, keine Zahl physischer Server. LCP und Lighthouse-Gesamtscores werden wegen der unterschiedlichen Einbettungen nicht verglichen. TBT beschreibt die erfasste Arbeit im Hauptthread des Testaufbaus. Bunny Stream mit Bunnys Voreinstellung preload=true; gemessen in Chromium.
Werbung und Abwanderung. Eingebettete YouTube-Videos können Werbung zeigen (YouTube-Hilfe), die einbettende Seite verdient daran nichts, außer ihr gehört der Kanal und er ist im Partnerprogramm. Empfehlungen am Ende lassen sich seit 2018 nicht abschalten (YouTube-Dokumentation): Ohne rel=0 können sie aus fremden Kanälen stammen, auch von Mitbewerbern, mit rel=0 aus dem Kanal des Videos. Vimeo zeigt nach eigener Angabe keine Werbung, der eigene Player nur, was man selbst will.
Datenschutz. Die normale YouTube-Einbettung sprach vor dem Klick auch Googles Werbenetz an. youtube-nocookie setzte keine Cookies, schrieb aber in Local Storage und IndexedDB und sprach 7 fremde Server an. Vimeo setzte mit dnt=1 3 Cookies, die Vimeo als notwendig einstuft (Vimeo-Hilfe), und einen Eintrag im Session Storage. Bunny Stream lud mit Bunnys Voreinstellung (preload=true) das kurze Testvideo schon vor dem Klick fast ganz und schrieb in den Local Storage. Bunny und Cloudflare liefern HLS-Dateien auch an eigene Player (Bunny, Cloudflare); eine Einbindung ohne Fremdanfragen vor dem Klick muss externe Quellen und Verbindungen tatsächlich bis zum Start zurückhalten. Ein lokal gespeichertes Vorschaubild hilft dabei. preload="none" allein garantiert das nicht: Es ist nur ein Hinweis an den Browser, und JavaScript-Player können selbst Anfragen auslösen. Diese optimierte Variante haben wir nicht gemessen; sie muss mit der konkreten Konfiguration im Browser geprüft werden.
Für das Speichern und Auslesen im Browser gilt § 25 TDDDG: nur mit Einwilligung, außer für einen ausdrücklich gewünschten Dienst, und dann nur das technisch Nötige; gewünscht ist ein Video nach Auffassung der Datenschutzkonferenz erst, wenn jemand es bewusst startet. Für das Laden von fremden Servern, bei dem die IP-Adresse dorthin geht, braucht es nach ihrer Auffassung eine Rechtsgrundlage nach Art. 6 DSGVO (Orientierungshilfe Digitale Dienste). Wer fremde Inhalte einbindet, kann dafür mitverantwortlich sein (EuGH, Fashion ID, 2019); das LG München I wertete 2022 die Weitergabe der IP-Adresse an Google durch Google Fonts ohne Einwilligung als Verstoß (Urteil 3 O 17493/20). Ein Urteil speziell zu YouTube-Einbettungen kennen wir nicht. Der Landesbeauftragte für den Datenschutz und die Informationsfreiheit Baden-Württemberg nannte 2022 Selbsthosten die wichtigste datenschutzfreundliche Alternative, danach einen Dienstleister ohne Übermittlung in Drittstaaten mit Vertrag zur Auftragsverarbeitung (Handreichung vom November 2022); Bunny bietet einen solchen Vertrag an, sein eingebetteter Player pingt laut Bunny aber CDN-Server weltweit an (Bunny). Auch beim Selbsthosten bleiben Hosting-Vertrag, Verarbeitung der IP-Adressen und Umgang mit Zugriffslogs zu klären. Ein Klick auf Abspielen erlaubt nicht automatisch zusätzliche Analyse oder Werbung. Dieser Abschnitt ist keine Rechtsberatung.
Datenmenge und Reaktionsfähigkeit. Der eigene Player übertrug vor dem Klick 165 kB, die getestete YouTube-Einbettung 1.235 kB. Weniger Daten allein belegen keine schnellere Wiedergabe. Beim eigenen Player betrug die Total Blocking Time im mobilen Lighthouse-Labor 228 ms; sie beschreibt die über 50 ms hinausgehenden Anteile langer Aufgaben im Hauptthread während des Ladezeitraums. Fremde iframes können in anderen Prozessen laufen; ihre Arbeit wird bei dieser Kennzahl nicht gleich erfasst. Auf Android ist die Prozessaufteilung anders als in der mobilen Simulation auf einem Desktop (Chromium). Deshalb vergleichen wir weder LCP noch den Lighthouse-Gesamtscore, in den LCP einfließt. Die TBT-Werte beschreiben den jeweiligen Laboraufbau und sind keine Rangliste der Player. Zeit bis zum ersten Videobild, Nachpufferungen und Reaktionsfähigkeit während der Wiedergabe wurden nicht gemessen. Google berücksichtigt reale Core Web Vitals im Ranking; aus diesen Labordaten folgt kein SEO-Vorteil (Google Search Central).
Videosuche. Am sparsamsten bindet man YouTube als Fassade ein: Vor dem Klick lädt nur ein Vorschaubild von Googles Server (zusammen 105 kB), den Player erst danach, dann mit 7 weiteren fremden Servern. Für die Videosuche rät Google davon ab, das Video erst nach einer Aktion des Nutzers zu laden (Google Search Central); Videoergebnisse zeigt Google ohnehin nur für Seiten, deren Hauptinhalt ein Video ist, nicht für eine Produktseite, auf der das Video den Text nur ergänzt. Beim Selbsthosten kann das Video ohne zusätzliche Videoplattform auffindbar eingebunden werden. Auch hier muss es ohne Nutzeraktion im gerenderten HTML erkennbar sein und die weiteren Indexierungsanforderungen erfüllen. Strukturierte Daten (VideoObject) helfen bei der Beschreibung, garantieren aber keine Aufnahme.
Kontrolle. Wer selbst hostet, bestimmt Player und Aussehen und hängt nicht von den Tarifen einer Plattform ab. Wie schnell sich Bedingungen ändern, zeigt Vimeos Richtlinie für Firmenkonten (Stand Juni 2026). Ganz unabhängig ist man aber nie: Auch Hetzner hat 2026 die Preise erhöht. Schutz vor fremder Einbindung, den Plattformen per Schalter bieten, richtet man selbst ein.
Selbst hosten heißt Betrieb: Updates, Überwachung, Bereitschaft, eine Umwandlung, die bei Fehlern Bescheid gibt, und eine Sicherung der Originale und der fertigen Stufen; den Bestand aus Szenario L neu umzuwandeln dauert auf vier Desktop-Kernen rechnerisch rund 196 Stunden. Ein einzelner Server ist zudem ein einzelner Ausfallpunkt: Wird er gewartet oder fällt er aus, laufen keine Videos. Ein Volume ist kein Backup; Hetzners Server-Backups und Snapshots schließen angeschlossene Volumes nicht ein (Dokumentation). Eine getrennte Sicherung und ein erprobter Wiederherstellungsweg gehören zum Betrieb. Zugriffslogs zeigen ausgelieferte Daten und Segmente. Für tatsächliche Wiedergabedauer, Abbrüche und weitere Player-Statistiken braucht es zusätzliche, datenschutzgerecht gestaltete Erfassung. Und er bringt keine Reichweite; YouTube ist eine Suchmaschine mit eigenem Publikum.
Unter dem angenommenen Qualitätsmix und ohne zusätzliche Übertragungen ist Bunny Stream im Volume-Netz in allen drei Szenarien günstiger, im Szenario M mit 4,99 € statt 24,34 € im Monat.
Für viele an Verbraucher gerichtete Online-Shops gilt seit dem 28. Juni 2025 das Barrierefreiheitsstärkungsgesetz. Ob ein Angebot erfasst ist und welche Ausnahmen greifen, ist gesondert zu prüfen; die Ausnahme für Kleinstunternehmen betrifft Dienstleistungen. Die rechtliche Einordnung ist von den technischen Anforderungen zu unterscheiden.
Die WCAG-Anforderung an Untertitel umfasst bei aufgezeichneten Videos auch Sprecherzuordnung und bedeutungstragende Geräusche; für klar gekennzeichnete Medienalternativen zu Text gibt es eine Ausnahme. Automatische Spracherkennung liefert einen Entwurf, der geprüft und korrigiert werden muss. Für WCAG AA kann zusätzlich Audiodeskription nötig sein, wenn wichtige Bildinformationen nicht bereits in der Tonspur vermittelt werden. Dazu gehört ein per Tastatur bedienbarer Player mit sichtbarem Fokus und verständlich beschrifteten Bedienelementen. Plattformfunktionen und ein eigener Player müssen daran gleichermaßen geprüft werden; beim Selbsthosten sind Aufbau und laufende Inhaltsprüfung im Aufwand zu berücksichtigen. Dies ist keine Rechtsberatung.
Die Gegenprobe stammt von einem Fach-Versandhändler mit großem Sortiment, für den wir die Videoauslieferung gebaut haben (Case Study). Sein Bestand umfasste am 24. September 2026 546 Videos mit zusammen 37 Stunden, im Median 3,1 Minuten lang. Je Minute belegen dort alle Stufen zusammen nur 12 MB statt 51 MB bei den Testclips, weil fast alle Uploads höchstens 540p erreichen; bei solchem Material kosten auch die Plattformen weniger, die nach Datenmenge abrechnen. Heute wandelt ein Cloud-Server mit vier geteilten Kernen um und liefert aus; den Bestand wandelte dessen Vorgänger im Median in der 0,27-fachen Videolänge um, schneller als der Desktop, vor allem weil die Stufen kleiner sind (andere Hardware).
Anteil gesehen und Mix der Stufen sind in der Rechnung noch Annahmen. Sobald genug Zugriffe vorliegen, prüfen wir ausgelieferte Datenmengen und angeforderte Qualitätsstufen anhand des Zugriffslogs und aktualisieren den Artikel. Tatsächlich angesehene Zeit lässt sich daraus wegen Vorpuffern, Abbrüchen und Browser-Caches nicht unmittelbar ablesen.
Datenschutz und Kontrolle über die Auslieferung gehen vor. Eigener Server, eigener Player: So lässt sich die Verbindung zu zusätzlichen Videoplattformen vermeiden. Die kalkulierten Infrastrukturkosten sind klein; ob sich der Aufbau lohnt, hängt vor allem von Einrichtung, Betrieb, Sicherung und den benötigten Funktionen ab.
Sie nutzen Vimeo als Firma. Prüfen Sie, ob Ihr Tarif zur geschäftlichen Nutzung passt. Studio kostet 357,75 € im Monat bei jährlicher Zahlung. Für reine Videoauslieferung sind ein eigener Server oder Bunny Stream im Modell günstiger; Teamfunktionen, Support und weitere Studio-Leistungen sind damit nicht gleichwertig ersetzt. Prüfen Sie auch mögliche Ausnahmen und den Bestandsschutz Ihres konkreten Tarifs.
Sie wollen keinen eigenen Betrieb. Bunny Stream ist günstig und bietet einen Vertrag zur Auftragsverarbeitung. Sein eingebetteter Player lädt aber schon vor dem Klick von Bunnys Servern; ein eigener Player kann diese Verbindungen bis zum Start zurückhalten, wenn Quellen und externe Anfragen erst dann aktiviert werden. Das muss an der konkreten Einbindung geprüft werden; preload="none" allein reicht als Nachweis nicht.
Reichweite geht vor. YouTube für die Reichweite, das eigene Hosting im Shop. Wer YouTube im Shop behalten will, bindet es als Fassade ein, am besten mit eigenem Vorschaubild statt dem von Google.
Sehr viele Abrufe oder Zuschauer in aller Welt. Der Labortest zeigt die Auslieferung aus dem Arbeitsspeicher im Rechenzentrum. Ob ein Server für den echten Bestand reicht, hängt auch von Speicherzugriffen, gleichzeitigem Encoding, Lastspitzen und den Netzwerkwegen ab. Den späteren Aufbau testen; ein CDN kann die weltweite Auslieferung verbessern, verursacht aber zusätzliche Kosten und verarbeitet die IP-Adressen der Zuschauer.
534
Videos mit Ton automatisch ausgewertet
Beschreiben Sie kurz, worum es geht. Wir melden uns mit einer ehrlichen Einschätzung, ob und wie wir helfen können.
Projekt anfragen