Was ist Transcoding?
Transcoding konvertiert eine vorhandene Mediendatei von einem Codec, Format, einer Bitrate oder Auflösung in eine andere. Es ist der Schritt, der aus einem unvorhersehbaren Upload Medien macht, die auf den Geräten, Browsern und unter den Netzwerkbedingungen, die Ihr Produkt unterstützt, zuverlässig wiedergegeben werden können.
Dieser Guide erklärt, wann Transcoding notwendig ist, wie es sich von verwandten Vorgängen unterscheidet, und wie Sie einen verwalteten Transcoding-Workflow aufbauen, ohne selbst eine FFmpeg-Infrastruktur betreiben zu müssen.

Was ist Transcoding?
Transcoding decodiert einen vorhandenen Medien-Stream und codiert ihn erneut mit einer anderen Ausgabekonfiguration. Die Ausgabe kann Container, Codec, Auflösung, Bitrate, Bildrate, Audio-Layout oder mehrere dieser Eigenschaften gleichzeitig ändern.
Das folgende Diagramm zeigt den gängigen Ablauf: Die komprimierte Eingabe wird in eine Zwischendarstellung decodiert, etwa PCM für Audio oder YUV für Video, und anschließend in das Zielformat codiert. Wiederholtes verlustbehaftetes Transcoding kann zu Generationsverlust führen. Bewahren Sie deshalb die Quelle mit der höchsten Qualität auf und leiten Sie Auslieferungsformate daraus ab, statt frühere Ausgaben wiederholt zu konvertieren.

Wann benötigen Sie Transcoding?
Typische Transcoding-Jobs lösen eines oder mehrere dieser Probleme:
- Wiedergabekompatibilität: Normalisieren Sie Uploads auf Codecs und Container, die von Ihren Zielbrowsern, mobilen Apps, Fernsehgeräten oder Bearbeitungswerkzeugen unterstützt werden.
- Adaptives Streaming: Erstellen Sie mehrere Varianten für HLS oder DASH, sodass ein Player die Qualität an die verfügbare Bandbreite anpassen kann.
- Reduzierung der Dateigröße: Verringern Sie Auflösung oder Bitrate, oder wechseln Sie zu einem effizienteren Codec, um Speicher- und Auslieferungskosten zu senken.
- Konsistente Produktausgabe: Normalisieren Sie Bildrate, Abmessungen, Lautheit, Kanäle und Metadaten, selbst wenn Nutzer Dateien von vielen unterschiedlichen Geräten hochladen.
- Erstellung von Derivaten: Erzeugen Sie aus einer Quelle Vorschauen, mobile Varianten, reine Audioausgaben oder Archivmaster.
Transcoding vs. Encoding vs. Transmuxing
Diese Begriffe beschreiben verwandte, aber unterschiedliche Vorgänge:
| Vorgang | Was sich ändert | Decodieren und neu codieren? | Beispiel |
|---|---|---|---|
| Encoding | Rohe oder unkomprimierte Medien werden zu komprimierten Medien | Ja | Kameraframes zu H.264 |
| Transcoding | Vorhandene komprimierte Medien erhalten eine neue Auslieferungskonfiguration | Ja | HEVC 4K zu H.264 1080p |
| Transmuxing | Der Container ändert sich, während die codierten Streams unverändert bleiben | Nein | H.264 von MOV zu MP4 |
Transmuxing ist schneller und vermeidet Generationsverlust, funktioniert jedoch nur, wenn die vorhandenen Streams bereits für das Ziel geeignet sind. Muss sich Codec, Auflösung, Bitrate oder eine andere Stream-Eigenschaft ändern, benötigen Sie Transcoding.
Wie kann ich Videos mit Transloadit transkodieren?
Sie können eine hausinterne Transcoding-Pipeline mit FFmpeg aufbauen, doch Produktionssysteme benötigen zusätzlich Upload-Verarbeitung, Queues, Retries, Skalierung, Monitoring, Speicherintegration und Auslieferung. Transloadit stellt diese Bestandteile als eine verwaltete Datei-Verarbeitungs-API bereit.
Der Video Encode Robot wendet Voreinstellungen oder individuelle FFmpeg-Parameter an, während der Video Adaptive Robot adaptive HLS- oder MPEG-DASH-Pakete erstellt. Für reine Audio-Workflows eignet sich der Audio Encode Robot.
Wie wäre es mit einem Beispiel? Das Template unten zeigt, wie Sie jedes hochgeladene Video mit Uppy browserkompatibel machen.
<!-- This pulls Uppy from our CDN -->
<!-- For smaller self-hosted bundles, install Uppy and plugins manually: -->
<!-- npm i --save @uppy/core @uppy/dashboard @uppy/remote-sources @uppy/transloadit ... -->
<link
href="https://releases.transloadit.com/uppy/v3.10.0/uppy.min.css"
rel="stylesheet"
/>
<button id="browse">Select Files</button>
<script type="module">
import {
Uppy,
Dashboard,
ImageEditor,
RemoteSources,
Transloadit,
} from 'https://releases.transloadit.com/uppy/v3.10.0/uppy.min.mjs'
const uppy = new Uppy()
.use(Transloadit, {
waitForEncoding: true,
alwaysRunAssembly: true,
assemblyOptions: {
params: {
// It's often better store encoding instructions in your account
// and use a `template_id` instead of adding these steps inline
steps: {
':original': {
robot: '/upload/handle',
},
browser720_webm_encoded: {
use: ':original',
robot: '/video/encode',
result: true,
ffmpeg_stack: 'v7',
height: 720,
preset: 'webm',
turbo: false,
width: 1280,
},
browser720_h264_encoded: {
use: ':original',
robot: '/video/encode',
result: true,
ffmpeg_stack: 'v7',
height: 720,
preset: 'ipad-high',
turbo: false,
width: 1280,
},
thumbed: {
use: 'browser720_h264_encoded',
robot: '/video/thumbs',
result: true,
count: 1,
ffmpeg_stack: 'v7',
format: 'jpg',
height: 720,
resize_strategy: 'fit',
width: 1280,
},
exported: {
use: ['browser720_webm_encoded', 'browser720_h264_encoded', 'thumbed', ':original'],
robot: '/s3/store',
credentials: 'demo_s3_credentials',
url_prefix: 'https://demos.transloadit.com/',
},
},
},
},
})
.use(Dashboard, { trigger: '#browse' })
.use(ImageEditor, { target: Dashboard })
.use(RemoteSources, {
companionUrl: 'https://api2.transloadit.com/companion',
})
.on('complete', ({ transloadit }) => {
// Due to `waitForEncoding:true` this is fired after encoding is done.
// Alternatively, set `waitForEncoding` to `false` and provide a `notify_url`
console.log(transloadit) // Array of Assembly Statuses
for (const assembly of transloadit) {
console.log(assembly.results) // Array of all encoding results
}
})
.on('error', (error) => {
console.error(error)
})
</script>
Sie können auch verwandte Workflows ausprobieren, ohne Integrationscode zu schreiben:
Erstellen Sie Ihren ersten Transcoding-Workflow
Starten Sie mit der obigen browserkompatiblen Demo und passen Sie deren Voreinstellung an die gewünschte Ausgabe Ihres Produkts an. Sie können das entstehende Template über die API ausführen, es mit Uppy für Browser-Uploads verbinden oder einen Export-Robot hinzufügen, um Ergebnisse direkt an Ihren Storage-Anbieter zu liefern.
Wenn Sie Hilfe bei der Wahl von Codecs, Varianten oder Streaming-Formaten benötigen, sprechen Sie mit unserem Team.
