Transformer の動作を制御するには、API サーフェスでオプションを構成するか、インターフェースのカスタム実装を記述して渡すことで、機能の一部を完全に置き換えることができます。このページでは、いくつかの例について説明します。
コーデック構成を制御する
デフォルトでは、デバイスのハードウェア エンコーダがリクエストされた出力解像度を受け入れない場合、Transformer はサポートされている解像度にフォールバックします。たとえば、Transformer は、ハードウェア エンコーダでよく必要とされるように、出力の幅と高さを 2 または 16 の倍数に揃えることができます。この動作をオフにして、必要な出力解像度を生成できない場合に Transformer がエラーをスローするようにできます。
Kotlin
transformerBuilder.setEncoderFactory( DefaultEncoderFactory.Builder(context).setEnableFallback(false).build() )
Java
transformerBuilder.setEncoderFactory( new DefaultEncoderFactory.Builder(context).setEnableFallback(false).build());
同様に、DefaultEncoderFactory は setRequestedVideoEncoderSettings オプションでカスタム エンコード設定を使用することもサポートしています。
エンコーダとデコーダのファクトリを完全に置き換えて、コーデックの設定方法を完全に制御することもできます。
カスタム muxer
Transformer.setMuxerFactory を呼び出すことで、メディア コンテナを書き込むためのカスタム ムクサーを設定できます。たとえば、アプリケーション レベルで独自の muxer を実装する場合は、Muxer インターフェースを実装するラッパーを記述し、setMuxerFactory を使用して Transformer に挿入できます。