Dostosowywanie

Aby kontrolować działanie funkcji Transformer, możesz skonfigurować opcje w interfejsie API lub całkowicie zastąpić fragmenty funkcjonalności, pisząc niestandardowe implementacje interfejsów i przekazując je. Na tej stronie znajdziesz kilka przykładów.

Konfigurowanie kodeka sterującego

Domyślnie Transformer przełączy się na obsługiwaną rozdzielczość, jeśli koder sprzętowy urządzenia nie akceptuje żądanej rozdzielczości wyjściowej. Na przykład Transformer może dopasować szerokość i wysokość danych wyjściowych tak, aby były wielokrotnością liczby 2 lub 16, co jest często wymagane przez kodery sprzętowe. Możesz wyłączyć to zachowanie, aby w przypadku, gdy Transformer nie może wygenerować wymaganej rozdzielczości wyjściowej, zgłaszał błąd:

Kotlin

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

Java

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

Podobnie DefaultEncoderFactory obsługuje też używanie niestandardowych ustawień kodowania za pomocą opcji setRequestedVideoEncoderSettings.

Możesz też całkowicie zastąpić fabryki enkoderów i dekoderów, aby mieć pełną kontrolę nad konfiguracją kodeków.

Niestandardowe multipleksery

Możesz ustawić niestandardowy multiplekser do zapisywania kontenerów multimedialnych, wywołując funkcję Transformer.setMuxerFactory. Jeśli na przykład zaimplementujesz własny multiplekser na poziomie aplikacji, możesz napisać otokę, która implementuje interfejs Muxer, a następnie użyć setMuxerFactory, aby wstrzyknąć ją do Transformer.