Anpassung

Um das Verhalten von Transformer zu steuern, können 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 Ausgabauflösung nicht akzeptiert. Mit Transformer kann beispielsweise die Ausgabebreite und ‑höhe auf ein Vielfaches von 2 oder 16 ausgerichtet werden, was häufig von Hardware-Encodern erforderlich ist. Sie können dieses Verhalten deaktivieren, sodass Transformer stattdessen einen Fehler ausgibt, wenn die erforderliche Ausgaberesolution nicht erreicht werden kann:

Kotlin

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

Java

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

Ebenso unterstützt das DefaultEncoderFactory-Element die Verwendung benutzerdefinierter Codierungseinstellungen mit der Option setRequestedVideoEncoderSettings.

Sie können die Factorys 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 ihn dann mit setMuxerFactory in Transformer einfügen.