Um das Verhalten von Transformer zu steuern, können Sie Optionen in der API-Oberfläche konfigurieren oder einzelne Funktionen vollständig ersetzen, indem Sie benutzerdefinierte Implementierungen von Schnittstellen schreiben und diese übergeben. Auf dieser Seite werden einige Beispiele beschrieben.
Codec-Konfiguration steuern
Wenn der Hardware-Encoder des Geräts die angeforderte Ausgabeauflösung nicht akzeptiert, verwendet Transformer standardmäßig eine unterstützte Auflösung. Beispielsweise kann der Transformer die Breite und Höhe der Ausgabe auf ein Vielfaches von 2 oder 16 ausrichten, wie es bei Hardware-Encodern häufig erforderlich ist. Sie können dieses Verhalten deaktivieren, sodass Transformer stattdessen einen Fehler ausgibt, wenn er die erforderliche Ausgabeauflösung nicht erzeugen kann:
Kotlin
transformerBuilder .setEncoderFactory( DefaultEncoderFactory.Builder(context) .setEnableFallback(false) .build())
Java
transformerBuilder .setEncoderFactory( new DefaultEncoderFactory.Builder(context) .setEnableFallback(false) .build());
In ähnlicher Weise unterstützt DefaultEncoderFactory
auch die Verwendung benutzerdefinierter Codierungseinstellungen mit der Option setRequestedVideoEncoderSettings
.
Sie können die Factorys für Encoder und Decodierer auch vollständig ersetzen, um die volle Kontrolle über die Einrichtung der Codecs zu erhalten.
Maßstäbchen
Sie können einen benutzerdefinierten Muxer zum Schreiben von Mediencontainern festlegen, indem Sie Transformer.setMuxerFactory
aufrufen. Wenn Sie beispielsweise Ihren eigenen Muxer auf Anwendungsebene implementieren, können Sie einen Wrapper schreiben, der die Muxer
-Schnittstelle implementiert, und dann setMuxerFactory
verwenden, um sie in Transformer einzufügen.