Transloadit startet Turbo Mode für schnelleres Video-Encoding
Was wäre, wenn ich Ihnen sagen würde, dass es eine noch schnellere Möglichkeit gibt, Ihre Videos zu codieren? Falls sich bereits ein Lächeln auf Ihrem Gesicht abzeichnet, verspreche ich Ihnen, Sie mit dem, was Sie als Nächstes lesen, nicht zu enttäuschen. Eine der jüngsten Entwicklungen hier bei Transloadit ist der „Turbo Mode“. Diese neue Funktion hilft Ihnen, die Zeit für das Video-Encoding drastisch zu verkürzen. In den nächsten Abschnitten gehen wir verschiedene Tests und Ergebnisse durch, um Ihnen alles darüber zu zeigen.

Grundlagen
Bevor wir mit den Tests beginnen, sollten Sie sich mit unserem Robot /http/import vertraut machen, mit dem wir die Original-Videodateien importieren. Es gibt viele andere Möglichkeiten, Dateien zu Transloadit zu bringen, doch in diesem Tutorial importieren wir Dateien, die öffentlich über eine URL verfügbar sind. Der Codeblock unten zeigt ein Beispiel für die Verwendung.
{
"imported": {
"robot": "/http/import",
"url": "https://file.com/video.mp4"
}
}
Anschließend übergeben wir die importierten Dateien an unsere Video-Encoding-Robots.
Legen Sie vor dem Ausführen der Beispiele Template-Zugangsdaten für
S3 mit dem Namen s3_cred an, die auf Ihren Ziel-Bucket verweisen. Ausgaben
für adaptives Streaming benötigen außerdem die
erforderlichen CORS-Einstellungen
für die Browser-Wiedergabe von einem anderen Ursprung.
Zum Testen unseres Turbo Mode verwenden wir fünf unterschiedlich große Videodateien:
video-XS.mp4- 10 MB groß.video-S.mp4- 34 MB groß.video-M.mp4- 260 MB groß.video-L.mp4- 1,2 GB groß.video-XL.mp4- 6,4 GB groß.
Das sind keine wissenschaftlichen Benchmarks, ich habe jedes Encoding lediglich dreimal ausgeführt und die durchschnittliche Zeit genommen, aber es sollte ein grundlegendes Gefühl für die Auswirkungen des Turbo Mode bei unterschiedlichen Videodateigrößen vermitteln.
Benchmark 1 - Normales 720p-WebM-Encoding im Vergleich zum Turbo Mode
Werfen wir einen Blick auf das folgende Template:
{
"steps": {
"imported": {
"robot": "/http/import",
"url": "https://example.com/files/video.mp4"
},
"webm_720p_encoded": {
"use": "imported",
"robot": "/video/encode",
"result": true,
"ffmpeg_stack": "v7",
"preset": "webm",
"width": 1280,
"height": 720
},
"exported": {
"use": "webm_720p_encoded",
"robot": "/s3/store",
"credentials": "s3_cred"
}
}
}
Im Template oben verwenden wir zunächst den Robot /http/import, um eine
Datei zu importieren. Anschließend lassen wir den Robot /video/encode das Video mit der
Voreinstellung webm codieren, bevor wir die Ergebnisse zu Amazon S3
exportieren.
Nun müssen wir diese Tests für jede der fünf Videodateien wiederholen, die wir in den Grundlagen ausgewählt haben. Anschließend halten wir die Zeitunterschiede fest.
Ich verwende das Node.js SDK, um Assemblies zu starten, aber Sie können das ebenso gut live auf der Transloadit-Website in Ihrem Konto ausprobieren oder eines unserer vielen anderen SDKs nutzen.
Als Nächstes wiederholen wir denselben Vorgang für dieselbe URL, fügen diesmal aber
turbo: true zum Step /video/encode hinzu und
aktivieren damit den Turbo Mode.
Für den Turbo Mode würde unser Template so aussehen:
{
"steps": {
"imported": {
"robot": "/http/import",
"url": "https://example.com/files/video-S.mp4"
},
"webm_720p_encoded": {
"use": "imported",
"robot": "/video/encode",
"result": true,
"ffmpeg_stack": "v7",
"preset": "webm",
"width": 1280,
"height": 720,
"turbo": true
},
"exported": {
"use": "webm_720p_encoded",
"robot": "/s3/store",
"credentials": "s3_cred"
}
}
}
Nachdem wir die Tests für diese beiden Szenarien ausgeführt haben, ergab sich die folgende Auswertung:
| Datei | Dateigröße | Normale Dauer | Mit Turbo Mode | Zeitersparnis |
|---|---|---|---|---|
video-XS.mp4 | 10 MB | 00:01:14 | 00:00:49 | 33,78 % |
video-S.mp4 | 34 MB | 00:01:13 | 00:00:45 | 38,36 % |
video-M.mp4 | 260 MB | 00:01:51 | 00:00:41 | 63,06 % |
video-L.mp4 | 1,2 GB | 00:29:41 | 00:04:01 | 86,47 % |
video-XL.mp4 | 6,4 GB | 02:07:02 | 00:17:42 | 86,09 % |
Wie Sie sehen, pulverisieren wir bei regulären Encoding-Jobs für Videos die Encoding-Zeiten auf ganzer Linie. 😱🏎
Die folgende Grafik veranschaulicht unsere Ergebnisse zusätzlich:

Benchmark 2 - Normales HLS-Encoding im Vergleich zum Turbo Mode
Werfen wir nun einen Blick auf das folgende Template:
{
"steps": {
"imported": {
"robot": "/http/import",
"url": "https://example.com/files/video-S.mp4"
},
"360p_hls_encoded": {
"use": "imported",
"robot": "/video/encode",
"ffmpeg_stack": "v7",
"preset": "hls-360p"
},
"hls_bundled": {
"use": {
"steps": ["360p_hls_encoded"],
"bundle_steps": true
},
"robot": "/video/adaptive",
"ffmpeg_stack": "v7",
"playlist_name": "my_playlist.m3u8",
"technique": "hls"
},
"exported": {
"use": "hls_bundled",
"robot": "/s3/store",
"path": "${file.meta.relative_path}/${file.name}",
"credentials": "s3_cred"
}
}
}
Im Template oben verwenden wir, genau wie beim Encoding für das Format webm,
den Robot /http/import, um eine Datei zu importieren. Anschließend lassen wir sie vom
Robot /video/encode codieren, um Segmente für den Robot /video/adaptive vorzubereiten.
Und dann exportieren wir alle Ergebnisse zu Amazon S3.
Und auch hier müssen wir den Test für alle fünf Dateien ausführen.
Als Nächstes wiederholen wir denselben Vorgang für alle Videos, diesmal enthält jedoch einer unserer
Steps turbo: true:
{
"steps": {
"imported": {
"robot": "/http/import",
"url": "https://example.com/files/video-S.mp4"
},
"360p_hls_encoded": {
"use": "imported",
"robot": "/video/encode",
"ffmpeg_stack": "v7",
"turbo": true,
"preset": "hls-360p"
},
"hls_bundled": {
"use": {
"steps": ["360p_hls_encoded"],
"bundle_steps": true
},
"robot": "/video/adaptive",
"ffmpeg_stack": "v7",
"playlist_name": "my_playlist.m3u8",
"technique": "hls"
},
"exported": {
"use": "hls_bundled",
"robot": "/s3/store",
"path": "${file.meta.relative_path}/${file.name}",
"credentials": "s3_cred"
}
}
}
In der Auswertung erhalten wir nun einige interessante Ergebnisse:
| Datei | Dateigröße | Normale Dauer | Mit Turbo Mode | Zeitersparnis |
|---|---|---|---|---|
video-XS.mp4 | 10 MB | 00:00:19 | 00:00:25 | -31,58 % |
video-S.mp4 | 34 MB | 00:00:21 | 00:00:28 | -33,33 % |
video-M.mp4 | 260 MB | 00:00:45 | 00:00:40 | 11,11 % |
video-L.mp4 | 1,2 GB | 00:04:43 | 00:04:05 | 13,43 % |
video-XL.mp4 | 6,4 GB | 00:32:12 | 00:23:01 | 28,52 % |
Wie Sie sehen, gab es bei der ersten Datei – die zufällig 10 MB groß war – eine um 31,58 % längere Encoding-Zeit. Das liegt daran, dass die Datei zu klein war, um in Chunks aufgeteilt zu werden, sodass der zusätzliche Overhead, den der Turbo Mode mit sich bringt, ohne Nutzen anfiel.
Ähnlich verhielt es sich bei der zweiten Datei mit 34 MB: Hier stieg die Encoding-Zeit um 33,33 %. Interessanterweise erzielte die Datei mit 260 MB jedoch einen Gewinn von etwa 11,11 % bei der Encoding-Zeit. Und wie erwartet verbesserten sich die Encoding-Zeiten auch bei der vierten und fünften Datei, und zwar um 13,43 % bzw. 28,52 %.
Es ist also klar: Je größer die Datei, desto mehr Geschwindigkeit gewinnen wir beim Encoding für HTTP Live Streaming (HLS).
Diese Grafik veranschaulicht die Ergebnisse zusätzlich:

Benchmark 3 - Normales MPEG-DASH-Encoding im Vergleich zum Turbo Mode
Für unseren letzten Test werfen wir einen Blick auf dieses Template:
{
"steps": {
"imported": {
"robot": "/http/import",
"url": "https://example.com/files/video-S.mp4"
},
"360p_dash_encoded": {
"use": "imported",
"robot": "/video/encode",
"ffmpeg_stack": "v7",
"preset": "dash-360p-video"
},
"dash_bundled": {
"use": {
"steps": ["360p_dash_encoded"],
"bundle_steps": true
},
"robot": "/video/adaptive",
"ffmpeg_stack": "v7",
"playlist_name": "my_playlist.mpd",
"technique": "dash"
},
"exported": {
"use": "dash_bundled",
"robot": "/s3/store",
"path": "${file.meta.relative_path}/${file.name}",
"credentials": "s3_cred"
}
}
}
Im Vergleich zum vorherigen Template für HLS mussten wir lediglich dash-360p-video als preset im
Step /video/encode verwenden und technique beim Robot
/video/adaptive auf dash umstellen.
Für die Tests mit Turbo Mode fügen Sie erneut einfach turbo: true zum Step
/video/encode hinzu.
Nach Ausführung aller Tests erhalten wir die folgenden Ergebnisse:
| Datei | Dateigröße | Normale Dauer | Mit Turbo Mode | Zeitersparnis |
|---|---|---|---|---|
video-XS.mp4 | 10 MB | 00:00:15 | 00:00:19 | -26,67 % |
video-S.mp4 | 34 MB | 00:00:16 | 00:00:20 | -25 % |
video-M.mp4 | 260 MB | 00:00:43 | 00:00:40 | 6,98 % |
video-L.mp4 | 1,2 GB | 00:02:59 | 00:02:04 | 30,73 % |
video-XL.mp4 | 6,4 GB | 00:22:29 | 00:12:51 | 42,85 % |
Wie erwartet (da HLS und DASH sehr ähnliche Technologien sind) sehen wir bei kleineren Dateien einen Geschwindigkeitsverlust. Erst ab der Marke von ~200 MB zeigt sich ein Geschwindigkeitsgewinn.
Die folgende Grafik veranschaulicht diese Ergebnisse zusätzlich:

Fazit der Benchmarks
Die verschiedenen Tests oben haben gezeigt, wie viel Zeit Sie mit dem Turbo Mode sparen können. Bei
Steps vom Typ /video/encode, die nicht die Eingabe für einen adaptiven Step sind,
sehen wir durchweg Geschwindigkeitsgewinne. Wenn Sie jedoch Technologien für adaptives Streaming
einsetzen, ist es ratsam, die Dateigrößen zu berücksichtigen.
Das passt dazu, wie der Turbo Mode unter der Haube aufgebaut ist. Unser API-Team hat einen eigenen Algorithmus entwickelt, der sich in FFmpeg integriert und es ermöglicht, die Arbeitslast eines einzelnen Video-Encoding-Jobs auf viele Maschinen zu verteilen. Die Orchestrierung der Parallelisierung selbst nimmt etwas Zeit in Anspruch, aber bei größeren Dateien ist dieser Overhead die Investition wert.
Wenn Sie die Dateigrößen nicht im Voraus kennen können, können Sie mit unserem Robot /file/filter den Traffic je nach Dateigröße an einen Step mit aktiviertem Turbo Mode leiten.
Preise
In den Turbo Mode ist viel Forschungs- und Entwicklungsarbeit geflossen, doch wir bieten dieses Upgrade allen Kunden kostenlos an (es gelten die regulären Preise). Wir hoffen, dass Ihre Nutzer den Geschwindigkeitsgewinn beim Hochladen ihrer Medien genießen.
Wie es weitergeht
Update (September 2026): Die Roadmap unten beschreibt unsere Pläne von 2018. Der aktuelle Parameter
turboakzeptierttrueoderfalseund ist standardmäßig auffalsegesetzt;"auto"wird nicht unterstützt.
In unserer nächsten Iteration führen wir einen Modus turbo: 'auto' ein, der den Turbo Mode
automatisch aktiviert, wenn wir Zeitersparnisse erwarten, sobald wir mehr Datenpunkte gesammelt
haben. Das bleibt ein Opt-in, bis ein halbes Petabyte an Produktivnutzung erreicht ist; dann werden
wir – sofern wir zuversichtlich genug sind – turbo: 'auto' zum Standard machen und ein Opt-out über
turbo: false erlauben.
In der Zwischenzeit laden wir alle unsere Kunden ein, turbo: true für Workloads auszuprobieren,
die nicht geschäftskritisch sind und keine fehlerfreien Ergebnisse erfordern. Fragen, Kommentare und
Bedenken nehmen wir gerne über unsere Support-Seite entgegen.
