ExoPlayer でサポートされている形式 をご覧ください。 一般的なメディア形式です。読み込み、抽出、読み込みに関しても ストリームのデコードは Transformer を使用した場合に適用されますが、Transformer では ExoPlayer のバンドル ソフトウェア デコーダ モジュール。
Transformer もエンコードに MediaCodec
に依存し、多重化を行う必要がある。
mux: 出力メディア ファイル。サポートされる出力形式を制限します。詳しくは、
MediaCodec 動画コーデック
エンコードの制限事項と詳細については
MediaMuxer
出力メディア コンテナに適用される制限をご覧ください。Transformer のみ
MP4 ファイルを出力します。
デフォルトでは、Transformer
は MediaMuxer
を使用しますが、進行中の 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 以降。トーン マッピングを有効にするには、
MediaCodec
は setHdrMode(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);
これにより、スローモーション動画に対応できます。 処理する方法を紹介しますユーザーが行う必要があるのは、 元の動画ではなくフラット化したバージョンです