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
を使用して Transformer に挿入できます。setMuxerFactory
カスタム ムクサーが MP4 編集リストへの負のタイムスタンプの書き込みをサポートしている場合は、
が
Muxer.Factory#supportsWritingNegativeTimestampsInEditList を返すようにしてください
true。これにより、Transformer は、動画を再エンコードすることなく、MP4
編集リストを使用したトリムのみの編集などの最適化を実行できます。デフォルトの InAppMp4Muxer
では、すでにこの機能がサポートされています。