カスタマイズ

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());

同様に、DefaultEncoderFactorysetRequestedVideoEncoderSettings オプションでカスタム エンコード設定を使用することもサポートしています。

エンコーダとデコーダのファクトリを完全に置き換えて、コーデックの設定方法を完全に制御することもできます。

カスタム muxer

Transformer.setMuxerFactory を呼び出すことで、メディア コンテナを書き込むためのカスタム ムクサーを設定できます。たとえば、アプリケーション レベルで独自の muxer を実装する場合は、Muxer インターフェースを実装するラッパーを記述し、setMuxerFactory を使用して Transformer に挿入できます。