Deutlich bessere Leistung bei Audio- und Video-Zusammenführung
Wir haben unsere Robots für die Audio- und Video-Zusammenführung kürzlich aktualisiert, sodass sie FFmpegs concat muxer nutzen. Das verbessert die Leistung für entsprechende Assemblies erheblich.
Damit Assemblies vom neuen Muxer profitieren, müssen die Eingabedateien die folgenden Bedingungen erfüllen:
- Im selben Format codiert (z. B. alle als MP4).
- Dieselben Codecs für ihre Streams verwenden (z. B. H.264 für Video und AAC für Audio).
- Dieselben Codec-Parameter aufweisen (etwa Auflösung, Bildrate bei Video oder Abtastrate bei Audio).

Warum es so viel schneller ist
Das Zusammenführen mit dem concat muxer ist aus mehreren Gründen deutlich schneller als der Einsatz komplexer Filter mit erneutem Transkodieren:
Kein erneutes Encoding erforderlich
Wenn Sie den concat muxer mit -c copy verwenden, muss FFmpeg die Streams nicht decodieren und
anschließend erneut codieren. Erneutes Encoding ist ein CPU-intensiver Vorgang, der die
Ausführungszeit einer Assembly deutlich verlängern kann, insbesondere bei Assemblies, die
hochauflösendes Video verarbeiten. Da dieser Schritt entfällt, verzichtet der concat muxer auf
unnötiges erneutes Encoding der Dateien und schließt die Assembly deutlich schneller ab.
Direktes Kopieren der Daten
Der concat muxer erlaubt es FFmpeg im Wesentlichen, die Mediendaten direkt aus den Quelldateien in die Ausgabedatei zu kopieren. Da dabei nur minimale Verarbeitung anfällt (abgesehen vom Parsen der Dateiheader und dem Anpassen der Zeitstempel), wird der Vorgang vor allem durch die Geschwindigkeit des Speichermediums begrenzt.
Erhalt der Qualität
Da kein erneutes Encoding stattfindet, entsteht auch kein Qualitätsverlust durch Kompressionsartefakte, die beim Encoding auftreten können. Das ist ein zusätzlicher Vorteil über den Geschwindigkeitsgewinn hinaus.
Im Gegensatz dazu muss FFmpeg beim Einsatz komplexer Filter oder bei erneutem Encoding alle Streams vollständig decodieren, verarbeiten (was Skalierung, Filterung oder andere Transformationen umfassen kann) und anschließend erneut in das Zielformat codieren. Das kostet nicht nur mehr Zeit, sondern kann auch die Qualität mindern und die Dateigröße erhöhen.
Dieser Ansatz ähnelt LosslessCut, einem Open-Source-Videoeditor, den unser eigener Transloadian Mikael Finstad entwickelt hat. LosslessCut nutzt ebenfalls FFmpegs concat demuxer für schnelle, verlustfreie Videobearbeitung.
Um diese Änderung optimal zu nutzen, sollten Sie abweichende Eingabedateien zunächst in dasselbe
Format, denselben Codec und dieselbe Auflösung transkodieren. Für beste Leistung verwenden Sie dafür
turbo: true und eine unserer
Voreinstellungen. Mit beidem können Sie die
Ausführungszeit Ihrer bestehenden Assemblies erheblich verbessern.
Wenn Ihre Eingabedateien ohnehin dasselbe Format, denselben Codec und dieselbe Auflösung haben, müssen Sie keine zusätzlichen Encoding-Steps hinzufügen, da Sie die Leistungsverbesserungen standardmäßig bereits bemerken sollten. Falls Ihre Dateien jedoch in unterschiedlichen Formaten, Codecs oder Auflösungen vorliegen, empfehlen wir, einen Step mit /file/filter hinzuzufügen, um abweichende Dateien an einen Encoding-Step zu übergeben. So holen Sie das Meiste aus Ihren nachfolgenden Steps zur Zusammenführung heraus.
