サポートされている形式

ExoPlayer でサポートされている形式 をご覧ください。 一般的なメディア形式です。読み込み、抽出、読み込みに関しても ストリームのデコードは Transformer を使用した場合に適用されますが、Transformer では ExoPlayer のバンドル ソフトウェア デコーダ モジュール。

Transformer もエンコードに MediaCodec に依存し、多重化を行う必要がある。 mux: 出力メディア ファイル。サポートされる出力形式を制限します。詳しくは、 MediaCodec 動画コーデック エンコードの制限事項と詳細については MediaMuxer 出力メディア コンテナに適用される制限をご覧ください。Transformer のみ MP4 ファイルを出力します。

デフォルトでは、TransformerMediaMuxer を使用しますが、進行中の InAppMuxer を使用します。 は、MediaMuxer の制限を回避するために、オプションで利用できます。 参照フレームの構造とサポートされているサンプル フォーマットをご覧ください。デフォルトのマルチプレクサは 今後のリリースでは、アプリ内マルチプレクサになる予定です。

画像のサポート

Transformer は BitmapFactory を使用してすべての画像アセットを読み込み、デコードするため、 Transformer は、BitmapFactory が行うすべての形式をサポートしています。詳しくは、 画像のサポート をご覧ください。マルチピクチャー フォーマット(GIF など)の場合は、1 つの画像 フレームがコンテナから生成された場合は、DefaultAssetLoaderFactory が 分析できます

特殊な形式

Transformer では、特殊な入力を提供する新しいメディア形式での入力の処理がサポートされています。 従来のフォーマットと比較できます

HDR 動画の処理

HDR 動画をサポートするデバイスが続々と増加している 鮮明で正確な画像を提供 明るさの幅が広がりました

Transformer は、Android 13(API レベル 33)以降の HDR 動画の編集をサポート 必要なエンコード サポートを備えたデバイスでのみ可能です。HDR 動画を編集する際、GL は 動画エフェクトでは、16 ビット浮動小数点カラー コンポーネントと BT.2020 を処理する必要があります。 色空間を指定します。HDR_MODE_KEEP_HDR は、 Composition。HDR 編集がサポートされていない場合、Transformer は HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL を使用するようフォールバックします。

HDR から SDR への変換(トーン マッピングとも呼ばれます)は Android でサポートされています。 10(API レベル 29)以降: 必要なデコードと OpenGL を備えたデバイス サポート。これは、HDR メディアを別のアプリやサービスと共有する場合に、 HDR コンテンツの取り込みに対応していません。OpenGL 呼び出しを使用してトーン マッピングを有効にするには setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL)(作成時: Composition。Android 12(API レベル 31)以降では、MediaCodec 一部のデバイスではトーン マッピングもサポートされます。これには、 HDR 動画をキャプチャできる Android 13 以降。トーン マッピングを有効にするには、 MediaCodecsetHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC) を呼び出します。

スローモーション メディアの処理

スローモーション動画には、各セクションの速さを示すメタデータが含まれます ストリームが再生されます。フラット化は、新しいデータを生成するプロセスで 新しいスローモーション動画に基づいて 動画ストリームが作成されますが プレーヤーでも適切にプレイできるよう、メタデータに基づいて 適用していないモデルです

スローモーション ストリームをフラット化するには、setFlattenForSlowMotion ビルダーを使用します。 メソッド(EditedMediaItem 内)

Kotlin

val editedMediaItem =
    EditedMediaItem.Builder(inputMediaItem).setFlattenForSlowMotion(true).build()
val transformer =
    Transformer.Builder(context).addListener(transformerListener).build()
transformer.start(editedMediaItem, outputPath)

Java

EditedMediaItem editedMediaItem =
    new EditedMediaItem.Builder(inputMediaItem).setFlattenForSlowMotion(true).build();
Transformer transformer =
    new Transformer.Builder(context).addListener(transformerListener).build();
transformer.start(editedMediaItem, outputPath);

これにより、スローモーション動画に対応できます。 処理する方法を紹介しますユーザーが行う必要があるのは、 元の動画ではなくフラット化したバージョンです