Transformer의 동작을 제어하려면 API 노출 영역에서 옵션을 구성하거나 인터페이스의 맞춤 구현을 작성하고 이를 전달하여 기능의 일부를 완전히 바꿀 수 있습니다. 이 페이지에서는 몇 가지 예를 설명합니다.
코덱 구성 제어
기기의 하드웨어 인코더가 요청된 출력 해상도를 허용하지 않으면 Transformer는 기본적으로 지원되는 해상도로 대체됩니다. 예를 들어 Transformer는 하드웨어 인코더에서 자주 요구하는 대로 출력 너비와 높이가 2 또는 16의 배수가 되도록 정렬할 수 있습니다. Transformer가 필요한 출력 해상도를 생성할 수 없는 경우 오류를 발생시키도록 이 동작을 사용 중지할 수 있습니다.
Kotlin
transformerBuilder.setEncoderFactory( DefaultEncoderFactory.Builder(context).setEnableFallback(false).build() )
자바
transformerBuilder.setEncoderFactory( new DefaultEncoderFactory.Builder(context).setEnableFallback(false).build());
마찬가지로 DefaultEncoderFactory는 setRequestedVideoEncoderSettings 옵션으로 맞춤 인코딩 설정을 사용하는 것도 지원합니다.
또한 인코더 및 디코더의 팩토리를 완전히 바꿔 코덱 설정 방법을 완전히 제어할 수도 있습니다.
맞춤 멀티플렉서
Transformer.Builder.setMuxerFactory를 호출하여 미디어 컨테이너를 작성하기 위한 맞춤 멀티플렉서를 설정할 수 있습니다. 예를 들어 애플리케이션 수준에서 자체
멀티플렉서를 구현하는 경우
Muxer 인터페이스를 구현하는 래퍼를 작성한 다음 setMuxerFactory를 사용하여
Transformer.Builder에 삽입할 수 있습니다.
맞춤 멀티플렉서가 MP4 수정 목록에 음수 타임스탬프를 쓰는 것을 지원하는 경우
다음을 확인해야 합니다.
Muxer.Factory#supportsWritingNegativeTimestampsInEditList가
true를 반환합니다. 이렇게 하면 Transformer가 동영상을 다시 인코딩하지 않고도 MP4 수정 목록을 사용하여 트리밍 전용 수정과 같은 최적화를 실행할 수 있습니다. 기본 InAppMp4Muxer의 경우 이미 지원됩니다.