Anpassung

Sie können das Verhalten von Transformer steuern, indem Sie Optionen in der API-Oberfläche konfigurieren oder Teile der Funktionalität vollständig ersetzen, indem Sie benutzerdefinierte Implementierungen von Schnittstellen schreiben und diese übergeben. Auf dieser Seite werden einige Beispiele beschrieben.

Codec-Konfiguration steuern

Standardmäßig greift Transformer auf eine unterstützte Auflösung zurück, wenn der Hardware-Encoder des Geräts die angeforderte Ausgabeauflösung nicht akzeptiert. Transformer kann beispielsweise die Ausgabebreite und ‑höhe so ausrichten, dass sie ein Vielfaches von 2 oder 16 sind, wie es häufig von Hardware-Encodern erforderlich ist. Sie können dieses Verhalten deaktivieren, sodass Transformer stattdessen einen Fehler ausgibt, wenn die erforderliche Ausgabeauflösung nicht erzeugt werden kann:

Kotlin

transformerBuilder.setEncoderFactory(
  DefaultEncoderFactory.Builder(context).setEnableFallback(false).build()
)

Java

transformerBuilder.setEncoderFactory(
    new DefaultEncoderFactory.Builder(context).setEnableFallback(false).build());

Ebenso unterstützt die DefaultEncoderFactory auch die Verwendung benutzerdefinierter Codierungseinstellungen mit der Option setRequestedVideoEncoderSettings.

Sie können die Factories für Encoder und Decoder auch vollständig ersetzen, um die Einrichtung der Codecs vollständig zu steuern.

Benutzerdefinierte Muxer

Sie können einen benutzerdefinierten Muxer zum Schreiben von Media-Containern festlegen, indem Sie Transformer.setMuxerFactory aufrufen. Wenn Sie beispielsweise einen eigenen Muxer auf Anwendungsebene implementieren, können Sie einen Wrapper schreiben, der die Muxer Schnittstelle implementiert, und dann setMuxerFactory verwenden, um ihn in Transformer einzufügen.

Wenn Ihr benutzerdefinierter Muxer das Schreiben negativer Zeitstempel in MP4-Bearbeitungslisten unterstützt, müssen Sie sicherstellen, dass Muxer.Factory#supportsWritingNegativeTimestampsInEditList `true` zurückgibt true. So kann Transformer Optimierungen wie reine Zuschnittbearbeitungen mithilfe von MP4-Bearbeitungslisten durchführen, ohne das Video neu codieren zu müssen. Für den Standard-InAppMp4Muxer wird dies bereits unterstützt.