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