Was ist Transcoding?
Transcoding decodiert vorhandene Medien und codiert sie erneut, um Codec, Bitrate, Auflösung oder andere Stream-Eigenschaften zu ändern. Dieser Schritt macht aus einem unvorhersehbaren Upload Medien, die auf den Geräten, in den Browsern und unter den Netzwerkbedingungen zuverlässig abspielbar sind, die Ihr Produkt unterstützt.
Dieser Leitfaden erklärt, wann Transcoding nötig ist, wie es sich von verwandten Vorgängen unterscheidet und wie Sie einen verwalteten Transcoding-Workflow aufbauen, ohne selbst eine FFmpeg-Infrastruktur zu betreiben.

Was ist Transcoding?
Transcoding decodiert einen vorhandenen Medienstream und codiert ihn erneut mit einer anderen Ausgabekonfiguration. Dabei können sich Container, Codec, Auflösung, Bitrate, Bildrate, Audiokanalbelegung oder mehrere dieser Eigenschaften zugleich ändern.
Das folgende Diagramm zeigt den üblichen Ablauf: Die komprimierte Eingabe wird in eine Zwischendarstellung wie PCM für Audio oder YUV für Video decodiert und anschließend ins Zielformat codiert. Wiederholtes verlustbehaftetes Transcoding kann zu Generationsverlusten führen. Bewahren Sie daher die Quelle mit der höchsten Qualität auf und leiten Sie daraus die Auslieferungsformate ab, statt frühere Ausgaben wiederholt zu konvertieren.

Wann benötigen Sie Transcoding?
Typische Transcoding-Aufgaben lösen eines oder mehrere dieser Probleme:
- Wiedergabekompatibilität: Uploads auf Codecs und Container vereinheitlichen, die Ihre Zielbrowser, mobilen Apps, Fernseher oder Bearbeitungsprogramme unterstützen.
- Adaptives Streaming: Mehrere Qualitätsstufen für HLS oder DASH erstellen, damit ein Player bei wechselnder Bandbreite die Qualität anpassen kann.
- Kleinere Dateien: Auflösung oder Bitrate senken oder zu einem effizienteren Codec wechseln, um die Kosten für Speicherung und Auslieferung zu reduzieren.
- Einheitliche Produktausgabe: Bildrate, Abmessungen, Lautheit, Kanäle und Metadaten vereinheitlichen, auch wenn Nutzer Dateien von vielen verschiedenen Geräten hochladen.
- Abgeleitete Ausgaben: Vorschauen, mobile Varianten, reine Audioausgaben oder Archiv-Master aus einer Quelle erstellen.
Transcoding, Encoding und Transmuxing im Vergleich
Diese Begriffe beschreiben verwandte, aber unterschiedliche Vorgänge:
| Vorgang | Was sich ändert | Decodieren und erneut codieren? | Beispiel |
|---|---|---|---|
| Encoding | Rohe oder unkomprimierte Medien werden zu komprimierten Medien | Nein; nur initiales Encoding | Kamerabilder 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 Generationsverluste, funktioniert aber nur, wenn die vorhandenen Streams bereits für das Ziel geeignet sind. Müssen 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 mit FFmpeg eine eigene Transcoding-Pipeline aufbauen. Produktionssysteme benötigen außerdem Upload-Verarbeitung, Queues, Retries, Skalierung, Monitoring, Storage-Integration und Auslieferung. Transloadit bietet diese Bausteine als eine verwaltete API zur Dateiverarbeitung.
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 können Sie den Audio Encode Robot nutzen.
Sehen wir uns ein Beispiel an? Das folgende Template zeigt, wie Sie ein unterstütztes hochgeladenes Video mit Uppy für die Wiedergabe im Browser codieren.
<!-- 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:
Audio-Encoding
Hochwertiges FLAC-Encoding
(English)Erstellen Sie Ihren ersten Transcoding-Workflow
Starten Sie mit der browserkompatiblen Demo oben und passen Sie ihre Voreinstellung an die Ausgabe an, die Ihr Produkt benötigt. Sie können das daraus entstandene Template über die API ausführen, für Browser-Uploads mit Uppy verbinden oder einen Export-Robot hinzufügen, um Ergebnisse direkt an Ihren Speicheranbieter auszuliefern.
Wenn Sie Hilfe bei der Auswahl von Codecs, Qualitätsstufen oder Streaming-Formaten benötigen, sprechen Sie mit unserem Team.
