Transformer の動作を制御するには、API サーフェスでオプションを構成します。 または、カスタム実装を記述して機能の一部を完全に置き換えます。 渡すだけではありませんこのページでは、いくつかの例について説明します。
コーデックの設定を制御する
デフォルトでは、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 に挿入します。