Aby kontrolować zachowanie Transformera, możesz skonfigurować opcje w interfejsie API lub całkowicie zastąpić niektóre funkcje, tworząc i przekazując niestandardowe implementacje interfejsów. Na tej stronie znajdziesz kilka przykładów.
Kontroluj konfigurację kodeka
Domyślnie Transformer powróci do obsługiwanej rozdzielczości, jeśli sprzętowy koder urządzenia nie zaakceptuje żądanej rozdzielczości wyjściowej. Na przykład Transformer może wyrównać szerokość i wysokość danych wyjściowych, aby były wielokrotnością liczby 2 lub 16, co jest często wymagane przez kodery sprzętowe. Możesz wyłączyć to działanie, tak aby Transformer zwracał błąd, jeśli nie może uzyskać wymaganej rozdzielczości wyjściowej:
Kotlin
transformerBuilder .setEncoderFactory( DefaultEncoderFactory.Builder(context) .setEnableFallback(false) .build())
Java
transformerBuilder .setEncoderFactory( new DefaultEncoderFactory.Builder(context) .setEnableFallback(false) .build());
I podobnie, DefaultEncoderFactory
obsługuje też ustawienia niestandardowego kodowania z opcją setRequestedVideoEncoderSettings
.
Możesz też całkowicie zastąpić fabryki koderów i dekoderów, aby mieć pełną kontrolę nad konfiguracją kodeków.
Filtry niestandardowe
Możesz ustawić niestandardowy modyfikator do zapisu w kontenerach multimediów, wywołując metodę Transformer.setMuxerFactory
. Jeśli na przykład wdrożysz własny filtrujący na poziomie aplikacji, możesz napisać kod, który implementuje interfejs Muxer
, a następnie użyć setMuxerFactory
do wstrzyknięcia go do Transformera.