Чтобы управлять поведением 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.