Для управления поведением Transformer вы можете настраивать параметры в интерфейсе API или полностью заменять отдельные функции, создавая собственные реализации интерфейсов и передавая их в качестве аргументов. На этой странице описаны некоторые примеры.
Конфигурация кодека управления
По умолчанию Transformer будет использовать поддерживаемое разрешение, если аппаратный кодировщик устройства не принимает запрошенное выходное разрешение. Например, Transformer может выравнивать ширину и высоту выходного изображения так, чтобы они были кратны 2 или 16, как это часто требуется аппаратными кодировщиками. Вы можете отключить это поведение, чтобы Transformer вместо этого выдавал ошибку, если он не может получить требуемое выходное разрешение:
Котлин
transformerBuilder.setEncoderFactory( DefaultEncoderFactory.Builder(context).setEnableFallback(false).build() )
Java
transformerBuilder.setEncoderFactory( new DefaultEncoderFactory.Builder(context).setEnableFallback(false).build());
Аналогичным образом, DefaultEncoderFactory также поддерживает использование пользовательских настроек кодирования с помощью параметра setRequestedVideoEncoderSettings .
Вы также можете полностью заменить фабрики кодировщиков и декодеров, чтобы получить полный контроль над настройкой кодеков.
Пользовательские мультиплексоры
Вы можете задать собственный мультиплексор для записи медиаконтейнеров, вызвав метод Transformer.setMuxerFactory . Например, если вы реализуете собственный мультиплексор на уровне приложения, вы можете написать обертку, реализующую интерфейс Muxer , а затем использовать setMuxerFactory для его внедрения в Transformer.