Anpassung

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.