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
オプションによるカスタム エンコード設定の使用もサポートされています。
また、エンコーダとデコーダのファクトリを完全に置き換えて、コーデックの設定を完全に制御できます。
カスタム マルチプレクサ
メディア コンテナを書き込むためのカスタム マルチプレクサを設定するには、Transformer.setMuxerFactory
を呼び出します。たとえば、アプリケーション レベルで独自のマルチプレクサを実装する場合は、Muxer
インターフェースを実装するラッパーを作成し、setMuxerFactory
を使用して Transformer に挿入できます。