Echtzeit-Encoding - über 150-mal schneller
Hinweis zur Historie dieser Funktion: Echtzeit-Encoding wurde im Mai 2012 eingestellt. Die Funktion und die Konfiguration unten beschreiben die ursprüngliche Version von 2010, nicht eine aktuelle Option.
Heute freuen wir uns, eine große neue Funktion anzukündigen: Echtzeit-Encoding.
Echtzeit-Encoding ermöglicht es, Ihre Videos zu codieren, während sie noch hochgeladen werden. Da unsere Server Videodateien deutlich schneller codieren können, als die meisten Ihrer Nutzer sie hochladen können, müssen diese nach dem Hochladen eines Videos nicht mehr warten, bis der Encoding-Vorgang abgeschlossen ist. Wie Sie im Screencast oben sehen können, entspricht das effektiv einer 150-fachen Steigerung der Encoding-Geschwindigkeit.
Bestehende Kunden können diese Funktion aktivieren, indem sie ihrem
Step zum Video-Encoding einfach
"realtime": true hinzufügen. Wir haben außerdem die
Dokumentation zu dieser Funktion aktualisiert.
Wenn Sie neu bei Transloadit sind, können Sie dies nutzen, indem Sie sich registrieren.
Technische Details
Aus technischer Sicht funktioniert Echtzeit-Encoding so, dass der Upload-Stream des Videos über die Standardeingabe in FFmpeg gepumpt wird.
Das klingt in der Theorie einfach, ist auf den meisten Stacks aber ziemlich schwierig umzusetzen. Glücklicherweise basiert unser System auf Node.js, das für diese Art der Stream-Umleitung sehr gut gerüstet ist.
Um das zu realisieren, verwenden wir unseren selbst entwickelten Datei-Upload-Parser, der die hochgeladene Datei auf die Festplatte schreibt und uns dabei laufend Fortschrittsereignisse liefert. Jedes Fortschrittsereignis leitet einen neuen Abschnitt des Videos an FFmpeg weiter. Kommt FFmpeg jedoch nicht hinterher, warten wir, bis der Stream der Standardeingabe geleert ist. So kann es niemals zu einem Anstauen von Speicher kommen.
Auch der Umgang mit Fehlern ist wichtig. Gibt FFmpeg uns während des Echtzeit-Encodings einen Fehler aus, brechen wir es einfach ab und greifen auf das reguläre Encoding zurück.
Kurz gesagt, so funktioniert es. Wenn Sie an weiteren Details interessiert sind, hinterlassen Sie einfach einen Kommentar. Falls Sie bereits stark in Ihren eigenen Video-Stack investiert haben, stehen wir auch beratend zur Verfügung, um diese Technologie auf Ihre Plattform zu bringen. Kontaktieren Sie uns einfach.
Wie es weitergeht
Dies ist nur einer der Schritte, um Streaming-Funktionalität in alle Bereiche unseres Dienstes zu bringen. Als Nächstes müssen wir das Streaming von in Echtzeit codierten Videos zu Amazon S3 angehen.
Eine weitere Herausforderung liegt in bestimmten Dateien vom Typ "mov", deren Metadaten am Ende der Datei stehen.
Glücklicherweise konnten wir Daniel G. Taylor dafür begeistern,
woraufhin er seine Python-Version von
qtfaststart nach JavaScript portiert hat. Wir sind daher
zuversichtlich, dass all das mit dem nächsten Upgrade unseres jQuery SDK gelöst wird.
Außerdem möchten wir Sie darauf hinweisen, dass Daniel derzeit eine Remote-Stelle sucht. Sie sollten ihn also kontaktieren, wenn Sie einen wirklich cleveren Hacker in Ihr Team holen möchten.
Abschließende Gedanken
Unsere Mission ist es, das Hochladen von Dateien im Web zu verbessern. Teilen Sie uns daher gerne mit, welche anderen Aspekte Ihnen den Tag verderben - wir bauen gerne die passende Lösung!
Danksagungen
Das im Screencast hochgeladene Beispielvideo wurde von unseren Freunden bei némata produziert.
