Aufnahmen, die in der Sekunde ihrer Entstehung bereitliegen
· 3 Min. Lesezeit

Aus einer Website einen Film zu machen ist ein Staffellauf. Der Rekorder nimmt einen Clip auf, und Sekunden später braucht die Video-Engine ihn, Bild für Bild. An unserem zweiten Tag in Produktion haben wir diese Übergabe zu etwas gemacht, an das du nie denken musst.
Ein Film ist eine Staffel von Dateien
Wenn du eine Adresse in PageToVid einfügst, arbeiten mehrere Schritte nacheinander. Der Rekorder steuert einen echten Browser und speichert kurze Clips und scharfe Screenshots. Der Sprachschritt schreibt eine Tonspur und ihre Untertitel. Danach setzt der Renderer alles zu dem MP4 zusammen, das du herunterlädst.
Jeder dieser Schritte erzeugt Dateien, und jede Datei braucht der nächste Schritt fast sofort. Der ganze Film hängt an einem einfachen Versprechen: Eine gerade geschriebene Datei lässt sich sofort lesen, von jedem Schritt, auf jeder Maschine, in jedem Browser, der sie als Vorschau zeigt.
Warum ein Ordner das falsche Bild war
Unser erster Aufbau behandelte den Cloud-Speicher wie einen Ordner. Ein Bucket war in den Container eingebunden, der Code schrieb hinein wie auf eine lokale Platte, und der Webserver lieferte die Dateien wieder aus. Das war der bequeme Weg, und in der Entwicklung lag derselbe Ordner einfach auf einem Laptop.
Echte Filme zeigten uns die Grenze dieses Bildes. Ein Netzwerk-Dateisystem, das sich als Ordner ausgibt, puffert seine Schreibvorgänge und hält zwischengespeichert, was es weiß. Eine Datei, die eben geschrieben wurde, ist deshalb nicht immer im nächsten Moment sichtbar. Für ein Produkt, dessen Renderer einen Clip Sekunden nach der Aufnahme anfordert, war genau dieses kleine Zeitfenster das entscheidende. Wir wollten, dass es unmöglich ist, eine Datei anzufordern, die noch nicht da ist.
Außerdem haben wir dafür gesorgt, dass der Renderer immer mit dem richtigen Server spricht. Er holt die Medien von der App, die im selben Container neben ihm läuft, und seine Adresse folgt jetzt dem Port, auf dem die App wirklich lauscht, statt einem Standardwert, der zu einem anderen Werkzeug gehörte.
Lokal arbeiten, hochladen, Adresse weitergeben
Also haben wir aufgehört, den Bucket als Festplatte auszugeben. Jeder Schritt arbeitet jetzt auf der schnellen lokalen Platte im Container, und sobald eine Datei fertig ist, wird sie über das Google Cloud Storage SDK hochgeladen. Der Upload liefert eine stabile https-Adresse, und ab dann nutzt jeder andere Teil des Produkts genau diese Adresse.
Derselbe Weg gilt für jede Art von Datei:
- die Clips und Screenshots, die der Rekorder aufnimmt
- die Sprecherspur und ihre Untertitel
- das fertige MP4
- die Bilder und Clips, die du im Editor hinzufügst
Sobald ein Upload zurückkommt, ist die Datei für jeden Leser da. Renderer, Editor-Vorschau und API sehen dasselbe zur selben Zeit.
Ein Codepfad für Laptop und Cloud
In der lokalen Entwicklung gibt es keinen Bucket, und dieselbe Speicherfunktion liefert dann einfach einen lokalen Pfad. Eine Funktion, zwei Umgebungen, dasselbe Verhalten. Was wir auf dem Laptop testen, läuft auch in Produktion, und das hält Überraschungen aus den Filmen heraus.
Einen Bonus haben wir sofort gespürt. Video auf einer lokalen Platte aufzunehmen und umzuwandeln geht schneller, als über ein Netzlaufwerk zu schreiben. Jeder Schritt ist etwas früher fertig, und der Film ist etwas früher bei dir.
Ein Deployment, das alles sagt
Den Code zu ändern war die halbe Arbeit. Die andere Hälfte bestand darin, dass der laufende Dienst dazu passt. Cloud Run behält früher angehängte Volumes, wenn ein neues Deployment sie nicht erwähnt. Den Mount aus unserem Deploy-Befehl zu streichen, reichte also allein nicht.
Wir haben eine ausdrückliche Anweisung ergänzt, die bei jedem Deployment alle Volumes entfernt. Jetzt beschreibt jedes Release die ganze Konfiguration, auch das, was nicht da sein darf, statt nur eine Änderung auf dem, was gerade läuft. Eine kleine Gewohnheit mit großer Wirkung: Was der Workflow sagt, das läuft.
Was das für deinen Film bedeutet
Wer ein Video macht, sieht nichts davon, und genau darum geht es. Du fügst einen Link ein, der Rekorder filmt, die Stimme spricht, und der Renderer findet jedes Teil genau dort, wo er es erwartet. Die Vorschau in deinem Browser und das Rendering bei uns lesen dieselbe Datei.
Dazu bekam das Produkt ein solides Fundament. Jeder Schritt spricht jetzt in dauerhaften Adressen statt in Pfaden auf einer einzelnen Maschine, und genau diese Form braucht eine wachsende Pipeline. Wenn du das Ergebnis sehen willst, füge eine Seite ein und sieh zu, wie daraus ein Film wird.
Sieh es auf deiner eigenen Website
Füge eine Seite ein und bekomme das vertonte Video, um das es in diesem Blog geht. Das erste ist kostenlos.
Weiterlesen


